60 Commits

Author SHA1 Message Date
idk
a38d18c049 fix #102 2020-12-21 18:11:30 -05:00
idk
a0be345f86 fix 102 2020-12-21 17:47:23 -05:00
idk
e08ce1c71e add a spanish translation. It's probably not very good, as it's the combination of Google Translate and my high school Spanish, but at least it exists and maybe could spark some interest, being a single checkin of a fairly simple nature 2020-12-21 16:07:38 -05:00
idk
f25a29052f emergency fix for proxy urls, exclusion was too broad 2020-12-14 17:19:20 -05:00
idk
13c5042006 Exclude clearnet code hosting sites from scrub checks 2020-12-14 14:47:34 -05:00
idk
01ce1a2f13 fmt 2020-12-14 14:44:46 -05:00
idk
8430e3b952 git commit -am exclude searches on clearnet code hosting services from scrub checks 2020-12-14 14:43:04 -05:00
idk
ac09b72be3 change the url for the MuWire test 2020-12-13 14:07:10 -05:00
idk
d901711c7b Merge branch 'slightly-better-popup' into 'master'
Slightly better popup

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!18
2020-12-13 04:37:06 +00:00
idk
88517a7b52 bail out when the header has already been detected and the pageaction is already set 2020-12-12 23:33:25 -05:00
idk
39eb695522 fmt 2020-12-12 00:08:27 -05:00
idk
009bac364c fmt 2020-12-11 20:49:16 -05:00
idk
9741b21def fmt 2020-12-11 20:48:35 -05:00
idk
df7bc109ed update popup css 2020-12-11 20:47:49 -05:00
idk
8cd9b53be3 update popup css 2020-12-11 20:18:58 -05:00
idk
9db61be253 Merge branch 'do-less' into 'master'
Be less Interruptive in non-essential ways

Closes #29 and #30

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!17
2020-12-12 01:16:18 +00:00
idk
78a1794568 fix sanity check on torrent proxy 2020-12-11 16:30:22 -05:00
idk
aa9805e107 Fix torrent-proxy sanity check 2020-12-11 15:42:28 -05:00
idk
a992553ffb make embedding torrents in pages faster 2020-12-10 10:15:48 -05:00
idk
3a30961cd1 fix btProxy 2020-12-09 21:58:58 -05:00
idk
a6aba7b5f7 fix btProxy 2020-12-09 20:55:57 -05:00
idk
26c4152bf6 fix btProxy 2020-12-09 20:55:04 -05:00
idk
8230fe92a7 uninstall process 2020-12-09 20:53:15 -05:00
idk
6d0cda9e67 get ready to clean up after the extension when it uninstalls 2020-12-09 20:51:08 -05:00
idk
12992c461b get ready to clean up after the extension when it uninstalls 2020-12-09 20:45:49 -05:00
idk
531963c1c0 filter the headers before we search them 2020-12-09 20:13:20 -05:00
idk
8bfb7cdd27 search the headers backward and break on the first one since the non-standard header is usually near the end 2020-12-09 18:20:48 -05:00
idk
40899889a0 correct promise resolution on scripts.js 2020-12-09 17:59:53 -05:00
idk
bc88ca80fd re-enable tab-to-tab isolation 2020-12-09 17:53:31 -05:00
idk
3b3744ffff Cheat at excluding MuWire from ! 2020-12-09 17:49:36 -05:00
idk
9cd6ce888e Try and bail out of all proxy-setting in the Wire Web App 2020-12-09 17:09:54 -05:00
idk
7b2216a12f Nix timed x-i2p-torrentlocation stuff entirely 2020-12-09 16:43:08 -05:00
idk
1946669b82 pre-filter URL's for so we don't try to run isolator checks on domains that have no chance of needing isolation 2020-12-09 14:36:59 -05:00
idk
bb14021bc0 make it so we only launch containers out of firefox-default, rather than re-checking every single request 2020-12-09 14:19:59 -05:00
idk
51510abaed Merge branch 'torrent-3' into 'master'
Torrent 3

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!16
2020-12-06 18:35:18 +00:00
idk
f837eb18d5 Make it so clicking the pageaction also triggers the torrent check as a manual approach 2020-12-06 13:32:43 -05:00
idk
bf4b160dcd fmt 2020-12-06 13:01:02 -05:00
idk
7bd08ab6e0 Check whether it's a torrent-enabled site much more often. It's still not quite right but it's much better now. Update priorities when it comes as a header instead of as a meta tag 2020-12-06 13:00:11 -05:00
idk
647c0523e8 Merge branch 'torrent-3' into 'master'
Retain much tighter control of x-i2p-torrentlocation priorities

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!15
2020-12-06 17:13:52 +00:00
idk
58b874d17f Merge branch 'fix-the-search-thing' into 'master'
Fix the search thing

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!14
2020-12-06 17:11:22 +00:00
idk
969d2769fd Merge branch 'irc-integration' into 'master'
Irc integration

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!13
2020-12-06 17:07:47 +00:00
idk
d88d6b2f61 Merge branch 'bookmarks-one-time' into 'master'
Bookmarks one time

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!12
2020-12-06 17:07:04 +00:00
idk
b420dc0a28 Merge branch 'master' into 'bookmarks-one-time'
# Conflicts:
#   bookmarks.js
#   options/options.js
#   proxy.js
2020-12-06 17:06:47 +00:00
idk
0489a2774f Merge branch 'i2pbote' into 'master'
add a bote context, and when there are no more I2P browsing tabs, delete and...

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!11
2020-12-06 17:04:33 +00:00
idk
49f394acca resolve merge conflicts in proxy.js 2020-12-06 12:01:27 -05:00
idk
dd788b15ca Merge branch 'dispatch' into 'master'
Dispatch

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!10
2020-12-06 16:45:35 +00:00
idk
84981fa801 fmt 2020-12-06 11:39:50 -05:00
idk
d328dd1ca0 use an onerror event to set the fallback http url for alt torrents 2020-12-06 11:39:14 -05:00
idk
590f2c7cd8 use an onerror event to set the fallback http url for alt torrents 2020-12-06 02:31:36 -05:00
idk
e93ad94c89 Don't preload resources if we think they could be torrents 2020-12-06 02:12:01 -05:00
idk
203decf121 fix the search thing 2020-12-05 23:53:24 -05:00
idk
5ab871b51f fix the search thing 2020-12-05 23:43:37 -05:00
idk
858d03fa2b fix the search thing 2020-12-05 22:06:15 -05:00
idk
374ce51eff fmt 2020-12-03 13:17:06 -05:00
idk
cd3dafe9c8 fmt 2020-12-03 12:20:43 -05:00
idk
8c256241cb only create bookmarks on the initial run, provide option to re-create them in preferences menu 2020-12-03 12:19:58 -05:00
idk
18cc8eb962 add a bote context, and when there are no more I2P browsing tabs, delete and recreate the context to assure privacy 2020-12-01 18:07:25 -05:00
idk
f1fd2f6fb6 Fix a bug I just created 2020-11-11 01:44:09 -05:00
idk
691dff77a0 fmt 2020-11-10 22:57:33 -05:00
idk
0910986d52 add a tab layer of granularity to isolator 2020-11-10 22:56:27 -05:00
26 changed files with 1655 additions and 1107 deletions

View File

@@ -37,11 +37,11 @@ clean: rc clean-artifacts
## EVEN RELEASES are AMO RELEASES
## ODD RELEASES are SELFHOSTED RELEASES
MOZ_VERSION=0.84
VERSION=0.83
MOZ_VERSION=0.94
VERSION=0.93
## INCREMENT THIS EVERY TIME YOU DO A RELEASE
LAST_VERSION=0.81
LAST_VERSION=0.91
YELLOW=F7E59A
ORANGE=FFC56D
@@ -339,7 +339,29 @@ snark-mirror:
seed:
cp -v "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" "$(HOME)/.i2p/i2psnark"
cp -v "../i2ppb-$(VERSION)@eyedeekay.github.io.xpi" "$(HOME)/.i2p/i2psnark"
wire:
cp -v "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" "$(HOME)/i2p/MuWireDownloads/"
cp -v "../i2ppb-$(VERSION)@eyedeekay.github.io.xpi" "$(HOME)/i2p/MuWireDownloads/"
ndtest:
web-ext run -u about:debugging \
-u http://127.0.0.1:7657/home \
-u http://127.0.0.1:7657/i2ptunnel \
-u http://127.0.0.1:7657/i2psnark \
-u http://127.0.0.1:7657/webmail \
-u http://127.0.0.1:7657/MuWire \
-u http://idk.i2p/video.html \
-u http://idk.i2p \
-u http://stats.i2p \
-u https://ramble.pw \
-u https://ramble.pw/f/i2p \
lht-test:
web-ext run -u about:debugging \
-u http://localhost:7657/home \
-u http://localhost:7657/i2ptunnel \
-u http://localhost:7657/i2psnark \
-u http://localhost:7657/webmail \
-u http://localhost:7657/MuWire/ \
-u http://idk.i2p

View File

@@ -167,6 +167,14 @@
"message": "Dispatch IRC (Private)",
"description": "Preface for the browser titlebar"
},
"botePreface": {
"message": "I2P-Bote Mail",
"description": "Preface for the browser titlebar"
},
"botePrefacePrivate": {
"message": "I2P-Bote Mail (Private)",
"description": "Preface for the browser titlebar"
},
"routerPreface": {
"message": "Router Console",
"description": "Preface for the browser titlebar"

302
_locales/es/messages.json Normal file
View File

@@ -0,0 +1,302 @@
{
"extensionName": {
"message": "I2P en navegación privada",
"description": "Nombre de la extensión."
},
"toopieName": {
"message": "toopie.html",
"description": "Nombre de la barra lateral."
},
"toopieTLS": {
"message": "Propiedades del sitio",
"description": "Nombre del panel de seguridad."
},
"extensionDescription": {
"message": "Su navegador ahora está configurado para usar I2P.",
"description": "Descripción de la extensión."
},
"extensionVersion": {
"message": "0,77",
"description": "Versión de la extensión."
},
"proxyFailedStatus": {
"message": "El proxy no está listo",
"description": "Estado fallido del proxy."
},
"proxySuccessStatus": {
"message": "El proxy está listo",
"description": "Estado fallido del proxy."
},
"controlHeader": {
"message": "Control",
"description": "Título del panel de control."
},
"controlExplain": {
"message": "Estos controles se utilizan para personalizar su experiencia de navegación I2P",
"description": "Introduce el panel de control."
},
"clearData": {
"message": "Borrar datos de navegación:",
"description": "Elemento de menú Borrar datos de navegación."
},
"clearDesc": {
"message": "Use esto para borrar sus datos de navegación I2P.",
"description": "Borrar descripción de la acción de datos de navegación."
},
"enableWebRTC": {
"message": "¿Habilitar WebRTC con proxy?",
"description": "Etiqueta de casilla de verificación de WebRTC."
},
"rtcDesc": {
"message": "WebRTC está deshabilitado de forma predeterminada, pero puede volver a encenderlo y forzarlo para que respete el proxy. Si es un usuario de la extensión del navegador Snowflake, esta opción está deshabilitada y WebRTC está activado de forma predeterminada.",
"description": "Descripción de la acción de WebRTC"
},
"disableHistory": {
"message": "¿Deshabilitar el historial en las pestañas I2P?",
"description": "Etiqueta de casilla de verificación del historial."
},
"histDesc": {
"message": "El historial se borra automáticamente cuando se cierran las pestañas de I2P. Si desea borrar el historial sobre la marcha, marque esta casilla.",
"description": "Descripción de la acción del historial"
},
"applicationHeader": {
"message": "Aplicaciones",
"description": "Encabezado de la sección de aplicaciones."
},
"applicationExplain": {
"message": "Estas aplicaciones funcionan con I2P directamente para brindarles seguridad y privacidad.",
"description": "Descripción de la sección de aplicación."
},
"windowVisitConsole": {
"message": "Consola del enrutador:",
"description": "Etiqueta de la consola del enrutador."
},
"routerConsole": {
"message": "El punto de entrada para todas las demás aplicaciones I2P es la consola del enrutador I2P. Para visitarla, haga clic aquí.",
"description": "Descripción de la consola del enrutador."
},
"windowVisitHomepage": {
"message": "Página de inicio:",
"description": "Página de inicio para la etiqueta de extensión."
},
"abouthome": {
"message": "Para obtener más información sobre esta extensión, visite esta página.",
"description": "Descripción de la página del botón de extensión."
},
"windowVisitHelppage": {
"message": "Página de ayuda:",
"description": "Página de ayuda para la etiqueta de extensión."
},
"help": {
"message": "Para obtener más información sobre esta extensión, visite esta página.",
"description": "Descripción de la página del botón de extensión."
},
"windowVisitI2ptunnel": {
"message": "Administrador de servicios ocultos:",
"description": "Título para i2ptunnel"
},
"i2ptunnel": {
"message": "I2P tiene una interfaz basada en web para configurar servicios .i2p como sitios web que puede configurar.",
"description": "Descripción de i2ptunnel"
},
"windowVisitSusimail": {
"message": "Correo electrónico:",
"descripción": "Título del correo electrónico"
},
"susimail": {
"message": "I2P también incluye un cliente de correo web que se puede utilizar para acceder al correo electrónico in-I2P.",
"description": "Descripción para correo electrónico"
},
"windowVisitSnark": {
"message": "Bittorrent:",
"description": "Título para Bittorrent"
},
"snark": {
"message": "I2P es capaz de compartir archivos de igual a igual de forma anónima utilizando la aplicación bittorrent incorporada.",
"description": "Descripción de Bittorrent"
},
"windowVisitSources": {
"message": "Código fuente de extensión:",
"description": "Título del enlace del código fuente"
},
"sources": {
"message": "Examine el código fuente aquí",
"description": "Descripción del enlace del código fuente"
},
"windowVisitWebPage": {
"message": "Página de inicio de la extensión:",
"description": "Visita la página de inicio de la extensión en Github"
},
"homepage": {
"message": "Hay más información disponible aquí",
"description": "Encontrar más información"
},
"windowVisitReleases": {
"message": "Extension Releases:",
"description": "Visite la página de lanzamiento"
},
"releases": {
"message": "Compruebe si hay nuevas versiones aquí",
"description": "Descripción de la nueva página de lanzamiento"
},
"titlePreface": {
"message": "Navegador I2P",
"description": "Prefacio de la barra de título del navegador"
},
"titlePrefacePrivate": {
"message": "Navegador I2P (privado)",
"description": "Prefacio de la barra de título del navegador"
},
"extensionPreface": {
"message": "Gestión I2P",
"description": "Prefacio de la barra de título del navegador"
},
"webPreface": {
"message": "Navegador web",
"description": "Prefacio de la barra de título del navegador"
},
"webPrefacePrivate": {
"message": "Navegador web (privado)",
"description": "Prefacio de la barra de título del navegador"
},
"ircPreface": {
"message": "Envío de IRC",
"description": "Prefacio de la barra de título del navegador"
},
"ircPrefacePrivate": {
"message": "Despacho de IRC (privado)",
"description": "Prefacio de la barra de título del navegador"
},
"botePreface": {
"message": "I2P-Bote Mail",
"description": "Prefacio de la barra de título del navegador"
},
"botePrefacePrivate": {
"message": "I2P-Bote Mail (privado)",
"description": "Prefacio de la barra de título del navegador"
},
"routerPreface": {
"message": "Consola del enrutador",
"description": "Prefacio de la barra de título del navegador"
},
"routerPrefacePrivate": {
"message": "Consola del enrutador (privada)",
"description": "Prefacio de la barra de título del navegador"
},
"torrentPreface": {
"message": "Bittorrent",
"description": "Prefacio de la barra de título del navegador"
},
"torrentPrefacePrivate": {
"message": "Bittorrent (privado)",
"description": "Prefacio de la barra de título del navegador"
},
"mailPreface": {
"message": "Correo web",
"description": "Prefacio de la barra de título del navegador"
},
"mailPrefacePrivate": {
"message": "Correo web (privado)",
"description": "Prefacio de la barra de título del navegador"
},
"i2ptunnelPreface": {
"message": "Administrador de servicios ocultos",
"description": "Prefacio de la barra de título del navegador"
},
"i2ptunnelPrefacePrivate": {
"message": "Administrador de servicios ocultos (privado)",
"description": "Prefacio de la barra de título del navegador"
},
"muwirePreface": {
"message": "MuWire",
"description": "Prefacio de la barra de título del navegador"
},
"muwirePrefacePrivate": {
"message": "MuWire (privado)",
"description": "Prefacio de la barra de título del navegador"
},
"resetMessage": {
"message": "Reset Tunnel",
"description": "Mensaje para el botón Reset Tunnel"
},
"infoTitle": {
"message": "Ayuda I2P",
"description": "Título del menú de ayuda"
},
"infoMessage": {
"message": "¡Ahora puede navegar libremente por eepWeb! Su navegador ahora está configurado para navegar de forma anónima en la red I2P. Mientras navega, su tráfico se enrutará a través de otros nodos de red para disfrazar su origen, tanto desde el servidor de los propios nodos. ",
"description": "Mensaje de ayuda"
},
"helpMessage": {
"message": "Obtén ayuda adicional",
"description": "Mensaje de ayuda"
},
"newsMessage": {
"message": "Visite el blog de I2P para conocer las últimas novedades sobre i2p.",
"description": "Mensaje de ayuda"
},
"forumMessage": {
"message": "Visite el Foro I2P para obtener más información o solicitar ayuda",
"description": "Mensaje de ayuda"
},
"proxyHelpText": {
"message": "Configure aquí su proxy I2P",
"description": "Ayuda para configurar las opciones del botón Reset Tunnel"
},
"hostText": {
"message": "Anfitrión:",
"description": "Host para el proxy HTTP o SOCKS5"
},
"portText": {
"message": "Puerto:",
"description": "Puerto para el proxy HTTP o SOCKS5"
},
"controlHelpText": {
"message": "Configure aquí la consola de su enrutador.",
"description": "Ayuda para configurar las opciones del botón Reset Tunnel"
},
"controlHostText": {
"message": "Host de control:",
"description": "Host para la consola del enrutador"
},
"controlPortText": {
"message": "Puerto de control:",
"description": "Puerto para la consola del enrutador"
},
"controlHostValue": {
"message": "127.0.0.1",
"description": "Host para la consola del enrutador"
},
"controlPortValue": {
"message": "7657",
"description": "Puerto para la consola del enrutador"
},
"isBase32": {
"message": "Dirección con formato I2P Base32",
"description": "Mensaje para el panel de información del sitio base32"
},
"isHostName": {
"message": "Nombre de host de salto I2P",
"description": "Mensaje para el nombre de host del panel de información del sitio"
},
"siteLabel": {
"message": "Dirección / Información del sitio:",
"description": "Etiqueta para la información del sitio i2p"
},
"certLabel": {
"message": "Información del certificado:",
"description": "Etiqueta para la información del certificado"
},
"certAbsent": {
"message": "Este sitio no está usando HTTPS. I2P aún lo verifica criptográficamente.",
"description": "Contenido de la información del certificado si no está"
},
"certPresent": {
"message": "Este sitio utiliza HTTPS. HTTPS sobre I2P es experimental y requiere certificados autofirmados o autorizaciones raíz alternativas.",
"description": "Contenido de la información del certificado si está presente"
},
"protocolHandlerValue": {
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s&action=Add&foo=Add+torrent",
"description": "Valor para el controlador de protocolo magnético"
}
}

View File

@@ -14,6 +14,18 @@ var ircpref = chrome.i18n.getMessage('ircPreface');
var ircprefpriv = chrome.i18n.getMessage('ircPrefacePrivate');
var extensionpref = chrome.i18n.getMessage('extensionPreface');
var muwirepref = chrome.i18n.getMessage('muwirePreface');
var muwireprefpriv = chrome.i18n.getMessage('muwirePrefacePrivate');
var botepref = chrome.i18n.getMessage('botePreface');
function onError(err) {
console.log('(background)', err);
}
function onContextGotLog(contexts) {
if (contexts != null) {
console.log(contexts);
}
}
function onContextsGot(contexts) {
var ids = [];
@@ -94,6 +106,15 @@ function onContextsGot(contexts) {
})
.then(onCreated, onNotCreated);
}
if (ids.indexOf(botepref) == -1) {
browser.contextualIdentities
.create({
name: botepref,
color: 'blue',
icon: 'fence',
})
.then(onCreated, onNotCreated);
}
}
function onContextsError() {
@@ -159,25 +180,45 @@ function themeWindow(window) {
function onThemeError() {
console.log('theme color set error');
}
function dynamicTheme() {
if (window.incognito) {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
} else {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
}
}
function browserTheme() {
console.log('Active in I2P window');
if (window.incognito) {
browser.theme.update(window.id, {
colors: {
frame: '#363A68',
toolbar: '#363A68',
},
});
} else {
browser.theme.update(window.id, {
colors: {
frame: '#363A68',
toolbar: '#363A68',
},
});
}
}
function logTabs(tabInfo) {
function onContextGotTheme(context) {
if (context.name == titlepref) {
console.log('Active in I2P window');
if (window.incognito) {
browser.theme.update(window.id, {
colors: {
frame: '#363A68',
toolbar: '#363A68',
},
});
} else {
browser.theme.update(window.id, {
colors: {
frame: '#363A68',
toolbar: '#363A68',
},
});
}
browserTheme();
if (tabInfo[0].url.startsWith('https://')) {
browser.pageAction.setPopup({
tabId: tabInfo[0].id,
@@ -190,72 +231,25 @@ function themeWindow(window) {
}
} else if (context.name == routerpref) {
console.log('Active in Router Console window');
if (window.incognito) {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
} else {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
}
dynamicTheme();
} else if (context.name == tunnelpref) {
console.log('Active in Hidden Services Manager window');
if (window.incognito) {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
} else {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
}
dynamicTheme();
} else if (context.name == mailpref) {
console.log('Active in Web Mail window');
if (window.incognito) {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
} else {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
}
dynamicTheme();
} else if (context.name == torrentpref) {
console.log('Active in Bittorrent window');
if (window.incognito) {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
} else {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
}
dynamicTheme();
} else if (context.name == botepref) {
console.log('Active in Bote window');
dynamicTheme();
} else if (context.name == ircpref) {
console.log('Active in IRC window');
dynamicTheme();
} else if (context.name == muwirepref) {
console.log('Active in MuWire window');
dynamicTheme();
}
}
if (
@@ -291,90 +285,43 @@ function setTitle(window) {
function onContextError() {
console.log('Context Error');
}
function setTitle(title, privtitle) {
if (window.incognito) {
browser.windows.update(window.id, {
titlePreface: privtitle + ': ',
});
} else {
browser.windows.update(window.id, {
titlePreface: title + ': ',
});
}
}
function logTabs(tabInfo) {
function onContextGotTitle(context) {
if (context.name == titlepref) {
console.log('Active in I2P window');
if (window.incognito) {
browser.windows.update(window.id, {
titlePreface: titleprefpriv + ': ',
});
} else {
browser.windows.update(window.id, {
titlePreface: titlepref + ': ',
});
}
} else if (context.name == webpref) {
console.log('Active in Web window');
if (window.incognito) {
browser.windows.update(window.id, {
titlePreface: webprefpriv + ' - ',
});
} else {
browser.windows.update(window.id, {
titlePreface: webpref + ' - ',
});
}
setTitle(titlepref, titleprefpriv);
} else if (context.name == muwirepref) {
console.log('Active in MuWire window');
setTitle(muwirepref, muwireprefpriv);
} else if (context.name == routerpref) {
console.log('Active in Router Console window');
if (window.incognito) {
browser.windows.update(window.id, {
titlePreface: titleprefpriv + ' - ' + routerprefpriv + ': ',
});
} else {
browser.windows.update(window.id, {
titlePreface: titlepref + ' - ' + routerpref + ': ',
});
}
setTitle(routerpref, routerprefpriv);
} else if (context.name == botepref) {
console.log('Active in Bote window');
setTitle(botepref, boteprefpriv);
} else if (context.name == tunnelpref) {
console.log('Active in Hidden Services Manager window');
if (window.incognito) {
browser.windows.update(window.id, {
titlePreface: titleprefpriv + ' - ' + tunnelprefpriv + ': ',
});
} else {
browser.windows.update(window.id, {
titlePreface: titlepref + ' - ' + tunnelpref + ': ',
});
}
setTitle(tunnelpref, tunnelprefpriv);
} else if (context.name == mailpref) {
console.log('Active in I2P Web Mail window');
if (window.incognito) {
browser.windows.update(window.id, {
titlePreface: titleprefpriv + ' - ' + mailprefpriv + ': ',
});
} else {
browser.windows.update(window.id, {
titlePreface: titlepref + ' - ' + mailpref + ': ',
});
}
setTitle(mailpref, mailprefpriv);
} else if (context.name == torrentpref) {
console.log('Active in I2P Torrent window');
if (window.incognito) {
browser.windows.update(window.id, {
titlePreface: titleprefpriv + ' - ' + torrentprefpriv + ': ',
});
} else {
browser.windows.update(window.id, {
titlePreface: titlepref + ' - ' + torrentpref + ': ',
});
}
setTitle(torrentpref, torrentprefpriv);
} else if (context.name == ircpref) {
console.log('Active in IRC window');
if (window.incognito) {
browser.windows.update(window.id, {
titlePreface: ircprefpriv + ' - ' + ircprefpriv + ': ',
});
} else {
browser.windows.update(window.id, {
titlePreface: ircpref + ' - ' + ircpref + ': ',
});
}
setTitle(ircpref, ircprefpriv);
}
}
@@ -434,29 +381,31 @@ function handleUpdated(updateInfo) {
them.originalTheme.images == null &&
them.originalTheme.properties == null)
) {
if (
updateInfo.theme.colors.frame != "#4456B7" &&
updateInfo.theme.colors.frame != "#363A68"
) {
function onSet() {
console.log("stored theme:", updateInfo.theme);
}
if (updateInfo.theme.colors != null) {
if (
updateInfo.theme.colors != null ||
updateInfo.theme.images != null ||
updateInfo.theme.properties != null
updateInfo.theme.colors.frame != "#4456B7" &&
updateInfo.theme.colors.frame != "#363A68"
) {
console.log("storing theme:", updateInfo.theme);
browser.storage.local
.set({ originalTheme: updateInfo.theme })
.then(onSet, onError);
function onSet() {
console.log("stored theme:", updateInfo.theme);
}
if (
updateInfo.theme.colors != null &&
updateInfo.theme.images != null &&
updateInfo.theme.properties != null
) {
console.log("storing theme:", updateInfo.theme);
browser.storage.local
.set({ originalTheme: updateInfo.theme })
.then(onSet, onError);
}
}
}
} else {
console.log("keeping stored theme:", them);
}
} catch {
console.log("theme storage error");
} catch (e) {
console.log("theme storage error", e);
}
}
browser.storage.local.get("originalTheme").then(maybeSet, onError);
@@ -513,3 +462,24 @@ browser.webRequest.onHeadersReceived.addListener(
{ urls: ["<all_urls>"] },
["blocking", "responseHeaders"]
);
function onClosedWindowCheck() {
var getContext = browser.contextualIdentities.query({ name: titlepref });
function checkTabs(ctx) {
function conditionallyDelete(tabs) {
if (tabs.length == 0) {
browser.contextualIdentities.remove(ctx[0].cookieStoreId);
browser.contextualIdentities
.query({})
.then(onContextsGot, onContextsError);
}
}
var tabs = browser.tabs.query({ cookieStoreId: ctx[0].cookieStoreId });
tabs.then(conditionallyDelete, onError);
}
getContext.then(checkTabs, onError);
}
browser.tabs.onRemoved.addListener(onClosedWindowCheck);
browser.windows.onRemoved.addListener(onClosedWindowCheck);
browser.windows.onCreated.addListener(onClosedWindowCheck);

View File

@@ -1,213 +1,245 @@
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then((got) => {
if (got.os != 'android') {
function bookmarks(bookmarkToolbar) {
console.log('Setting up bookmark toolbar', bookmarkToolbar);
function bookHome(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let createRhizomeBookmark = browser.bookmarks.create({
url: 'about:I2p',
title: 'I2P Extension Home Page',
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
} else {
let createBookmark = browser.bookmarks.create({
url: browser.runtime.getURL('home.html'),
title: 'I2P Extension Home Page',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
function bookmarksSetup() {
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then((got) => {
if (got.os != 'android') {
function bookmarks(bookmarkToolbar) {
console.log('(bookmarks)', bookmarkToolbar);
console.log('Setting up bookmark toolbar', bookmarkToolbar);
function bookHome(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let createRhizomeBookmark = browser.bookmarks.create({
url: 'about:I2p',
title: 'I2P Extension Home Page',
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
} else {
let createBookmark = browser.bookmarks.create({
url: browser.runtime.getURL('home.html'),
title: 'I2P Extension Home Page',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
}
console.log('(bookmarks) adding home page bookmark');
}
console.log('(bookmarks) adding home page bookmark');
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
);
let gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
}
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
);
let gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
}
}
function bookTorrent(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/i2psnark',
title: 'Bittorrent',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
let createRhizomeBookmark = browser.bookmarks.create({
url:
'http://' + control_host + ':' + control_port + '/i2psnark',
title: 'Bittorrent',
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
function bookTorrent(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/i2psnark',
title: 'Bittorrent',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
let createRhizomeBookmark = browser.bookmarks.create({
url:
'http://' + control_host + ':' + control_port + '/i2psnark',
title: 'Bittorrent',
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
}
}
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
);
let gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
}
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
);
let gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
}
}
function bookConsole(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/home',
title: 'I2P Console',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
let createRhizomeBookmark = browser.bookmarks.create({
url: 'http://' + control_host + ':' + control_port + '/home',
title: 'I2P Console',
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
function bookConsole(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/home',
title: 'I2P Console',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
let createRhizomeBookmark = browser.bookmarks.create({
url: 'http://' + control_host + ':' + control_port + '/home',
title: 'I2P Console',
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
}
}
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
);
let gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
}
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
);
let gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
}
}
function bookMail(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/webmail',
title: 'Web Mail',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
let createRhizomeBookmark = browser.bookmarks.create({
url: 'http://' + control_host + ':' + control_port + '/webmail',
title: 'Web Mail',
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
function bookMail(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/webmail',
title: 'Web Mail',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
let createRhizomeBookmark = browser.bookmarks.create({
url:
'http://' + control_host + ':' + control_port + '/webmail',
title: 'Web Mail',
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
}
console.log('(bookmarks) adding webmail bookmark');
}
console.log('(bookmarks) adding webmail bookmark');
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
);
let gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
}
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
);
let gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
}
}
function bookI2PTunnel(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
var createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/i2ptunnel',
title: 'Hidden Services Manager',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
var createRhizomeBookmark = browser.bookmarks.create({
url:
'http://' + control_host + ':' + control_port + '/i2ptunnel',
title: 'Hidden Services Manager',
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
function bookI2PTunnel(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
var createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/i2ptunnel',
title: 'Hidden Services Manager',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
var createRhizomeBookmark = browser.bookmarks.create({
url:
'http://' +
control_host +
':' +
control_port +
'/i2ptunnel',
title: 'Hidden Services Manager',
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
}
console.log('(bookmarks) adding i2ptunnel bookmark');
}
console.log('(bookmarks) adding i2ptunnel bookmark');
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
);
var gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
}
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
);
var gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
}
function onRejected(error) {
console.log(`An error : ${error}`);
}
function onCreated(node) {
console.log('Bookmarked', node);
}
var b0 = browser.bookmarks.search({
title: 'I2P Extension Home Page',
});
b0.then(bookHome, onRejected);
var b1 = browser.bookmarks.search({
title: 'Bittorrent',
});
b1.then(bookTorrent, onRejected);
var b2 = browser.bookmarks.search({
title: 'Hidden Services Manager',
});
b2.then(bookI2PTunnel, onRejected);
var b3 = browser.bookmarks.search({
title: 'Web Mail',
});
b3.then(bookMail, onRejected);
var b4 = browser.bookmarks.search({
title: 'I2P Console',
});
b4.then(bookConsole, onRejected);
defaultSettings['bookmarks_state'] = true;
}
var bt = browser.bookmarks.search({
query: 'Toolbar',
});
function toolDir(bookmarkToolbar) {
let defaultSettings = {};
chrome.storage.local.set(defaultSettings);
console.log('(bookmarks) created');
var ibbt = browser.bookmarks.search('I2P Toolbar');
function setupDir(ibbt) {
function onToolbarCreated(node) {
var ibt = browser.bookmarks.search('I2P Toolbar');
ibt.then(bookmarks);
}
if (ibbt[0] == null) {
let createBookmark = browser.bookmarks.create({
title: 'I2P Toolbar',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onToolbarCreated);
}
}
ibbt.then(setupDir);
}
bt.then(toolDir);
function handleCreated(id, bookmarkInfo) {
//var propValue;
for (var propName in bookmarkInfo) {
let propValue = bookmarkInfo[propName];
console.log(propName, propValue);
}
}
function onRejected(error) {
console.log(`An error : ${error}`);
}
function onCreated(node) {
console.log('Bookmarked', node);
}
var b0 = browser.bookmarks.search({
title: 'I2P Extension Home Page',
});
b0.then(bookHome, onRejected);
var b1 = browser.bookmarks.search({
title: 'Bittorrent',
});
b1.then(bookTorrent, onRejected);
var b2 = browser.bookmarks.search({
title: 'Hidden Services Manager',
});
b2.then(bookI2PTunnel, onRejected);
var b3 = browser.bookmarks.search({
title: 'Web Mail',
});
b3.then(bookMail, onRejected);
var b4 = browser.bookmarks.search({
title: 'I2P Console',
});
b4.then(bookConsole, onRejected);
browser.bookmarks.onCreated.addListener(handleCreated);
}
});
}
var bt = browser.bookmarks.search({
query: 'Toolbar',
});
function toolDir(bookmarkToolbar) {
var ibbt = browser.bookmarks.search('I2P Toolbar');
function setupDir(ibbt) {
function onToolbarCreated(node) {
var ibt = browser.bookmarks.search('I2P Toolbar');
ibt.then(bookmarks);
}
if (ibbt[0] == null) {
let createBookmark = browser.bookmarks.create({
title: 'I2P Toolbar',
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onToolbarCreated);
}
}
ibbt.then(setupDir);
}
bt.then(toolDir);
function handleCreated(id, bookmarkInfo) {
//var propValue;
for (var propName in bookmarkInfo) {
let propValue = bookmarkInfo[propName];
console.log(propName, propValue);
}
}
browser.bookmarks.onCreated.addListener(handleCreated);
function conditionalBookmarksSetup(obj) {
console.log('(bookmarks) state', obj.bookmarks_state);
if (obj.bookmarks_state == false) {
bookmarksSetup();
}
});
if (obj.bookmarks_state == undefined) {
bookmarksSetup();
}
}
if (browser != null) {
let gettingStorage = browser.storage.local.get('bookmarks_state');
gettingStorage.then(conditionalBookmarksSetup, bookmarksSetup);
}
const bookmarksButton = document.getElementById('bookmarksButton');
if (bookmarksButton != null) {
bookmarksButton.addEventListener('click', bookmarksSetup);
}

View File

@@ -49,6 +49,5 @@ contentUpdateById('window-visit-releases', 'windowVisitReleases');
contentUpdateById('releases', 'releases');
fetch('http://proxy.i2p').then((myJson) => {
console.log('FETCH RESULT', myJson);
contentUpdateById('proxy-check', 'proxySuccessStatus');
});

34
debian/changelog vendored
View File

@@ -1,3 +1,37 @@
i2psetproxy.js (0.93-1) UNRELEASED; urgency=low
* Emergency fix of the first one
-- idk <hankhill19580@gmail.com> Sat, 14 DEC 2020 5:18:53 -0400
i2psetproxy.js (0.91-1) UNRELEASED; urgency=low
* Exclude clearnet code hosting sites from scrub checks
-- idk <hankhill19580@gmail.com> Sat, 14 DEC 2020 2:46:23 -0400
i2psetproxy.js (0.89-1) UNRELEASED; urgency=low
* Pages with lots of AJAX requests could trigger a performance degradation
* Improve performance of x-i2p-* headers and meta tags
-- idk <hankhill19580@gmail.com> Sat, 13 DEC 2020 2:22:00 -0400
i2psetproxy.js (0.87-1) UNRELEASED; urgency=low
* Disable searching for i2p sites in non-i2p search engines
* Add contexts for i2pbote and Dispatch
* Remain in tighter control of x-i2p-torrentlocation priority
-- idk <hankhill19580@gmail.com> Sat, 10 NOV 2020 1:33:50 -0400
i2psetproxy.js (0.85-1) UNRELEASED; urgency=low
* Fix a bug which was causing i2psnark to fail to isolate.
-- idk <hankhill19580@gmail.com> Sat, 10 NOV 2020 1:33:50 -0400
i2psetproxy.js (0.83-1) UNRELEASED; urgency=low
* Add a tab for I2P-Native Dispatch

View File

@@ -1,7 +1,9 @@
function routerHost(url) {
// console.log("(urlcheck) HANDLER URL CHECK");
let hostname = '';
let path = '';
function pathcheck(str) {
// console.log("(urlcheck) HANDLER PATH CHECK", str);
if (str != undefined) {
let final = str.split('/')[0];
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
@@ -11,7 +13,8 @@ function routerHost(url) {
final === 'i2psnark' ||
final === 'torrents' ||
final.startsWith('transmission') ||
final.startsWith('tracker')
final.startsWith('tracker') ||
url.includes(':7662')
) {
console.log('(urlcheck) Torrent application path', final);
return 'i2psnark';
@@ -23,6 +26,11 @@ function routerHost(url) {
console.log('(urlcheck) MuWire application path', final);
return 'muwire';
}
} else if (final.startsWith('i2pbote')) {
if (!url.includes('.png')) {
console.log('(urlcheck) I2PBote application path', final);
return 'i2pbote';
}
} else if (
final === 'home' ||
final === 'console' ||
@@ -101,9 +109,8 @@ var handlerSetup = function(requestDetails) {
}
return requestDetails;
};
browser.webRequest.onBeforeRequest.addListener(
handlerSetup,
{ urls: ['<all_urls>'] },
['blocking']
);
/*
browser.webRequest.onBeforeRequest.addListener(handlerSetup, {
urls: ['<all_urls>'],
});
*/

View File

@@ -272,4 +272,10 @@ img.readyness {
}
input {
color: #1f1a24
}
#hidden {
display: none
}
.hidden {
display: none
}

43
host.js
View File

@@ -46,11 +46,32 @@ function extensionHost(url) {
function i2pHostName(url) {
let hostname = '';
if (url.indexOf('://') > -1) {
console.log('(hosts)', url);
let u = new URL(url);
if (u.host.endsWith('.i2p')) {
hostname = u.host;
} else if (url.includes('=')) {
if (url.includes('.i2p')) {
lsit = url.split('=');
for (let item in lsit) {
var items = lsit[item].split(`\ % `); //"\%")
for (let p in items) {
if (items[p].includes('.i2p')) {
hostname = items[p].replace('3D', 1);
}
break;
}
if (hostname != '') {
break;
}
}
}
} else if (url.indexOf('://') > -1) {
hostname = url.split('/')[2];
} else {
hostname = url.split('/')[0];
}
console.log('(hosts) scrub', hostname);
return hostname;
}
@@ -60,6 +81,7 @@ function i2pHost(url) {
}
function routerHost(url) {
// console.log("(urlcheck) HOST URL CHECK");
let hostname = '';
let path = '';
function pathcheck(str) {
@@ -72,7 +94,8 @@ function routerHost(url) {
final === 'i2psnark' ||
final === 'torrents' ||
final.startsWith('transmission') ||
final.startsWith('tracker')
final.startsWith('tracker') ||
url.includes(':7662')
) {
console.log('(urlcheck) Torrent application path', final);
return 'i2psnark';
@@ -84,10 +107,17 @@ function routerHost(url) {
console.log('(urlcheck) MuWire application path', final);
return 'muwire';
}
} else if (final.startsWith('i2pbote')) {
if (!url.includes('.png')) {
console.log('(urlcheck) I2PBote application path', final);
return 'i2pbote';
}
} else if (
final === 'home' ||
final === 'console' ||
final === 'dns' ||
final === 'susidns' ||
final.startsWith('susidns') ||
final === 'sitemap' ||
final.startsWith('config')
) {
@@ -111,15 +141,6 @@ function routerHost(url) {
if (hostname === control_host + ':' + control_port) {
return pathcheck(path);
}
if (hostname === control_host + ':' + '7662') {
return pathcheck(path);
}
if (hostname === 'localhost' + ':' + '7662') {
return pathcheck(path);
}
if (hostname === '127.0.0.1' + ':' + '7662') {
return pathcheck(path);
}
if (hostname === 'localhost' + ':' + control_port) {
return pathcheck(path);
}

View File

@@ -38,7 +38,7 @@
<ul>
<li>
<a href="magnet:?xt=urn:btih:988d73b46899c1495eeea5ed137605ab277470be">Magnet Link</a>
<a href="magnet:?xt=urn:btih:991cc1181d816c20629caef454ebabf14785fbf7">Magnet Link</a>
</li>
<li>

14
info.js
View File

@@ -14,7 +14,7 @@ function checkSnowflake() {
try {
function snowflake(snowflake) {
console.log("snowflake plugin found, leaving WebRTC alone", snowflake);
EnablePeerConnection();
AssurePeerConnection();
}
var snowflakeInfo = browser.management.get(
"{b11bea1f-a888-4332-8d8a-cec2be7d24b9}" // string
@@ -61,6 +61,9 @@ document.addEventListener("click", (clickEvent) => {
creating.then(() => {
console.log("The news panel has been created");
});
} else if (clickEvent.target.id === "visit-irc") {
browser.sidebarAction.setPanel({ panel: "http://127.0.0.1:7669" });
browser.sidebarAction.open();
} else if (clickEvent.target.id === "generate-fresh-tunnel") {
function refreshIdentity() {
console.log("Generating new identity");
@@ -332,3 +335,12 @@ const interval = minutes * 60 * 1000;
setInterval(function () {
if (UpdateContents !== undefined) UpdateContents();
}, interval);
fetch("http://127.0.0.1:7669").then((myJson) => {
if (myJson.status == 200) {
let irc = document.getElementById("visit-irc");
if (irc != null) {
irc.classList.remove("hidden");
}
}
});

View File

@@ -4,7 +4,7 @@
<meta charset="utf-8">
<link href="search.css" rel="stylesheet">
<link href="home.css" rel="stylesheet">
<link href="info.css" rel="stylesheet"><!--<link href="torrent/popup.css" rel="stylesheet">-->
<!--<link href="info.css" rel="stylesheet">--><!--<link href="torrent/popup.css" rel="stylesheet">-->
<title>
</title>

View File

@@ -16,6 +16,7 @@
"proxy",
"privacy",
"storage",
"webNavigation",
"webRequest",
"webRequestBlocking",
"contextualIdentities",
@@ -26,7 +27,7 @@
],
"manifest_version": 2,
"name": "__MSG_extensionName__",
"version": "0.82",
"version": "0.91",
"description": "__MSG_extensionDescription__",
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
"icons": {

View File

@@ -19,16 +19,21 @@
</select>
</section>
<section class="scheme-options proxy-options" id="proxy-options">
<div class="title">
Proxy Options
</div>
<section class="scheme-options">
<span class="title">Bookmarks Status:</span> <input id="bookmarksState" name="bookmarksstate" type="checkbox" value="bookmarksstate"> <label for="bookmarksState">Bookmarks were created at install-time. <button id="bookmarksButton" type="submit">Re-Create Bookmarks</button></label>
</section>
<p id="proxyHelpText">
<section class="scheme-options proxy-options" id="proxy-options">
<label for="bookmarksState"></label>
<div class="title">
<label for="bookmarksState">Proxy Options</label>
</div>
<label for="bookmarksState"></label>
<p id="proxyHelpText"><label for="bookmarksState"></label>
</p>
<label id="portText">Host:</label> <input data="host" id="host" type="text" value="127.0.0.1">
<label for="bookmarksState"><label id="portText">Host:</label> <input data="host" id="host" type="text" value="127.0.0.1">
<br>
<label id="hostText">Port:</label> <input data="port" id="port" type="text" value="4444">
<label id="hostText">Port:</label> <input data="port" id="port" type="text" value="4444"></label>
</section>
<!--<section class="scheme-options identity-options">
<div class="panel">
@@ -83,7 +88,8 @@
</div>
</section>
<input id="save-button" type="button" value="Save preferences">
<script src="options.js"></script> <!--<script src="/torrent/browser-polyfill.min.js"></script>
<script src="options.js"></script>
<script src="/bookmarks.js"></script> <!--<script src="/torrent/browser-polyfill.min.js"></script>
<script src="/torrent/options.js"></script>-->
</body>
</html>

View File

@@ -1,3 +1,8 @@
function SetBookButton() {
// var bmid = document.getElementById("bookmark");
//bmid.textContent = chrome.i18n.getMessage("bookmarkButton");
}
function SetHostText() {
var hostid = document.getElementById('hostText');
hostid.textContent = chrome.i18n.getMessage('hostText');
@@ -28,6 +33,21 @@ function SetControlHelpText() {
portid.textContent = chrome.i18n.getMessage('controlHelpText');
}
function getBookmarksCreated() {
bookmarks_state = document.getElementById('bookmarks').value;
console.log('(options)Got i2p bookmarks state:', bookmarks_state);
if (bookmarks_state == undefined) {
return false;
}
if (bookmarks_state == 'false') {
return false;
}
if (bookmarks_state == 'true') {
return true;
}
return false;
}
function getScheme() {
const proxy_scheme = document.querySelector('#proxy_scheme');
console.log('(options)Got i2p proxy scheme:', proxy_scheme.value);
@@ -159,6 +179,9 @@ function checkStoredSettings(storedSettings) {
port = undefined;
}
console.log('(options)proxy', "'" + host + "'", ':', port);
if (!storedSettings['bookmarks_state'])
defaultSettings['bookmarks_state'] = false;
else defaultSettings['bookmarks_state'] = storedSettings['bookmarks_state'];
if (!storedSettings['proxy_scheme'])
defaultSettings['proxy_scheme'] = 'http';
else defaultSettings['proxy_scheme'] = storedSettings['proxy_scheme'];
@@ -245,6 +268,9 @@ function checkAndroidStoredSettings(storedSettings) {
let defaultSettings = {};
let host = '';
let port = '';
if (!storedSettings['bookmarks_state'])
defaultSettings['bookmarks_state'] = false;
else defaultSettings['bookmarks_state'] = storedSettings['bookmarks_state'];
if (!storedSettings['proxy_scheme']) defaultSettings['proxy_scheme'] = 'http';
else defaultSettings['proxy_scheme'] = storedSettings['proxy_scheme'];
if (!storedSettings['proxy_host']) {
@@ -320,6 +346,7 @@ function onError(e) {
function storeSettings() {
let storableSettings = {};
storableSettings['bookmarks_state'] = getBookmarksCreated();
storableSettings['proxy_scheme'] = getScheme();
storableSettings['proxy_host'] = getHost();
storableSettings['proxy_port'] = getPort();
@@ -341,15 +368,19 @@ function storeSettings() {
function updateUI(restoredSettings) {
const selectList = document.querySelector('#proxy_scheme');
if (selectList == undefined) selectList.value = restoredSettings.proxy_scheme;
if (selectList != undefined) selectList.value = restoredSettings.proxy_scheme;
//console.log("(options)showing proxy scheme:", selectList.value);
console.log(restoredSettings);
const bms = document.getElementById('bookmarksState');
if (bms != undefined) bms.checked = restoredSettings.bookmarks_state;
const hostitem = document.getElementById('host');
if (hostitem == undefined) hostitem.value = restoredSettings.proxy_host;
if (hostitem != undefined) hostitem.value = restoredSettings.proxy_host;
//console.log("(options)showing proxy host:", hostitem.value);
const portitem = document.getElementById('port');
if (portitem == undefined) portitem.value = restoredSettings.proxy_port;
if (portitem != undefined) portitem.value = restoredSettings.proxy_port;
//console.log("(options)showing proxy port:", portitem.value);
const controlhostitem = document.getElementById('controlhost');
@@ -363,41 +394,42 @@ function updateUI(restoredSettings) {
//console.log("(options)showing control port:", controlportitem.value);
const rpchostitem = document.getElementById('rpchost');
if (rpchostitem == undefined) rpchostitem.value = restoredSettings.rpc_host;
if (rpchostitem != undefined) rpchostitem.value = restoredSettings.rpc_host;
//console.log("(options)showing rpc host:", rpchostitem.value);
const rpcportitem = document.getElementById('rpcport');
if (rpcportitem == undefined) rpcportitem.value = restoredSettings.rpc_port;
if (rpcportitem != undefined) rpcportitem.value = restoredSettings.rpc_port;
//console.log("(options)showing rpc port:", rpcportitem.value);
const rpcpathitem = document.getElementById('rpcpath');
if (rpcpathitem == undefined) rpcpathitem.value = restoredSettings.rpc_path;
if (rpcpathitem != undefined) rpcpathitem.value = restoredSettings.rpc_path;
//console.log("(options)showing rpc path:", rpcpathitem.value);
const rpcpassitem = document.getElementById('rpcpass');
if (rpcpassitem == undefined) rpcpassitem.value = restoredSettings.rpc_pass;
if (rpcpassitem != undefined) rpcpassitem.value = restoredSettings.rpc_pass;
//console.log("(options)showing rpc pass:");
const btrpchostitem = document.getElementById('btrpchost');
if (btrpchostitem == undefined)
if (btrpchostitem != undefined)
btrpchostitem.value = restoredSettings.rpc_host;
//console.log("(options)showing bt rpc host:", btrpchostitem.value);
const btrpcportitem = document.getElementById('btrpcport');
if (btrpcportitem == undefined)
if (btrpcportitem != undefined)
btrpcportitem.value = restoredSettings.rpc_port;
//console.log("(options)showing rbt pc port:", rpcportitem.value);
const btrpcpathitem = document.getElementById('btrpcpath');
if (btrpcpathitem == undefined)
if (btrpcpathitem != undefined)
btrpcpathitem.value = restoredSettings.rpc_path;
//console.log("(options)showing bt rpc path:", btrpcpathitem.value);
const btrpcpassitem = document.getElementById('btrpcpass');
if (btrpcpassitem == undefined)
if (btrpcpassitem != undefined)
btrpcpassitem.value = restoredSettings.rpc_pass;
//console.log("(options)showing bt rpc pass:");
SetBookButton();
SetHostText();
SetPortText();
SetPortHelpText();

View File

@@ -20,6 +20,15 @@ function disableHyperlinkAuditing() {
setting.then(onSet);
}
// UNINSTALL ONLY
function enableHyperlinkAuditing() {
var setting = browser.privacy.websites.hyperlinkAuditingEnabled.clear();
console.log('Disabling hyperlink auditing/val=', {
value: false,
});
setting.then(onSet);
}
// This enables first-party isolation
function enableFirstPartyIsolation() {
var setting = browser.privacy.websites.firstPartyIsolate.set({
@@ -31,6 +40,15 @@ function enableFirstPartyIsolation() {
setting.then(onSet);
}
// UNINSTALL ONLY
function disableFirstPartyIsolation() {
var setting = browser.privacy.websites.firstPartyIsolate.clear();
console.log('Enabling first party isolation/val=', {
value: true,
});
setting.then(onSet);
}
/* This rejects tracking cookies and third-party cookies but it
LEAVES "Persistent" Cookies unmodified in favor of an option in the content
interface for now */
@@ -53,6 +71,10 @@ function disableEvilCookies() {
});
}
function enableEvilCookies() {
var getting = browser.privacy.websites.cookieConfig.clear();
}
// Make sure that they're gone
/*function disableBadCookies(){
var setting = browser.privacy.websites.thirdPartyCookiesAllowed.set({
@@ -75,6 +97,15 @@ function disableReferrers() {
setting.then(onSet);
}
// UNINSATALL ONLY
function enableReferrers() {
var setting = browser.privacy.websites.referrersEnabled.clear();
console.log("Disabling referrer headers/val=", {
value: false,
});
setting.then(onSet);
}
// enable fingerprinting resistent features(letterboxing and stuff)
function enableResistFingerprinting() {
var setting = browser.privacy.websites.resistFingerprinting.set({
@@ -86,6 +117,15 @@ function enableResistFingerprinting() {
setting.then(onSet);
}
// UNINSTALL ONLY
function disableResistFingerprinting() {
var setting = browser.privacy.websites.resistFingerprinting.clear();
console.log("Enabling resist fingerprinting/val=", {
value: false,
});
setting.then(onSet);
}
// This is essentially a blocklist of clearnet web-sites known to do bad tracking
function enableTrackingProtection() {
var setting = browser.privacy.websites.trackingProtectionMode.set({
@@ -97,6 +137,15 @@ function enableTrackingProtection() {
setting.then(onSet);
}
// UNINSTALL ONLY
function disableTrackingProtection() {
var setting = browser.privacy.websites.trackingProtectionMode.clear();
console.log("Enabling tracking protection/val=", {
value: "always",
});
setting.then(onSet);
}
/* This disables protected content, which is a form of digital restrictions
management dependent on identifying information */
function disableDigitalRestrictionsManagement() {
@@ -117,6 +166,45 @@ function disableDigitalRestrictionsManagement() {
});
}
// UNINSTALL ONLY
function disableDigitalRestrictionsManagement() {
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then((got) => {
if (got.os == "win") {
var setting = browser.privacy.websites.protectedContentEnabled.clear();
console.log(
"Setting Protected Content(Digital Restrictions Management) false/val=",
{
value: true,
}
);
setting.then(onSet);
}
});
}
function unsetAllPrivacy() {
enableHyperlinkAuditing();
disableFirstPartyIsolation();
enableEvilCookies();
enableReferrers();
disableTrackingProtection();
disableResistFingerprinting();
enableDigitalRestrictionsManagement();
UnsetPeerConnection();
EnableSavePasswords();
}
browser.management.onUninstalled.addListener((info) => {
function gotSelf(selfinfo) {
if (info.name == selfinfo.name) {
unsetAllPrivacy();
}
}
var gettingSelf = browser.management.getSelf();
gettingSelf.then(gotSelf);
});
function setAllPrivacy() {
disableHyperlinkAuditing();
enableFirstPartyIsolation();
@@ -140,7 +228,7 @@ function ResetPeerConnection() {
}
function snowflake(snowflake) {
console.log("snowflake plugin found, leaving WebRTC alone", snowflake);
EnablePeerConnection();
AssurePeerConnection();
}
var snowflakeInfo = browser.management.get(
"{b11bea1f-a888-4332-8d8a-cec2be7d24b9}" // string
@@ -148,23 +236,11 @@ function ResetPeerConnection() {
snowflakeInfo.then(snowflake, reset);
}
function EnablePeerConnection() {
var webrtc = true;
var rtc = browser.privacy.network.peerConnectionEnabled.set({
value: webrtc,
});
rtc.then(AssurePeerConnection);
console.log("Enabled WebRTC");
}
function AssurePeerConnection() {
function assure(webrtc) {
browser.privacy.network.peerConnectionEnabled.set({
value: true,
});
browser.privacy.network.networkPredictionEnabled.set({
value: false,
});
chrome.privacy.network.webRTCIPHandlingPolicy.set({
value: "disable_non_proxied_udp",
});
@@ -173,6 +249,20 @@ function AssurePeerConnection() {
rtc.then(assure);
}
// UNINSTALL ONLY
function UnsetPeerConnection() {
function assure(webrtc) {
browser.privacy.network.peerConnectionEnabled.set({
value: true,
});
chrome.privacy.network.webRTCIPHandlingPolicy.set({
value: "default",
});
}
let rtc = browser.privacy.network.peerConnectionEnabled.get({});
rtc.then(assure);
}
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then((got) => {
if (got.os == "android") {
@@ -191,9 +281,7 @@ function ResetDisableSavePasswords() {
}
function EnableSavePasswords() {
browser.privacy.services.passwordSavingEnabled.set({
value: true,
});
browser.privacy.services.passwordSavingEnabled.clear();
console.log("Enabled saved passwords");
}
@@ -328,16 +416,46 @@ function forgetBrowsingData(storedSettings) {
function i2pHostName(url) {
let hostname = "";
if (url.indexOf("://") > -1) {
console.log("(hosts)", url);
let u = new URL(url);
if (u.host.endsWith(".i2p")) {
hostname = u.host;
} else if (url.includes("=")) {
console.log("(hosts) scrub 1", url);
if (url.includes(".i2p")) {
lsit = url.split("=");
console.log("(hosts) scrub 2", hostname);
for (let item in lsit) {
var items = lsit[item].split(`\ % `); //"\%")
for (let p in items) {
if (items[p].includes(".i2p")) {
hostname = items[p].replace("3D", 1);
}
console.log("(hosts) scrub 3", hostname);
break;
}
if (hostname != "") {
console.log("(hosts) scrub 4", hostname);
break;
}
}
}
} else if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
console.log("(hosts) scrub 5", hostname);
} else {
hostname = url.split("/")[0];
console.log("(hosts) scrub 6", hostname);
}
console.log("(hosts) scrub 7", hostname);
return hostname;
}
function i2pHost(url) {
let hostname = i2pHostName(url);
if (hostname.endsWith(".i2p")) {
console.log("(hostname) i2p", hostname);
}
return hostname.endsWith(".i2p");
}
@@ -381,7 +499,7 @@ function message(recieved) {
console.log(recieved);
if (recieved.rtc === "enableWebRTC") {
console.log("enableWebRTC");
EnablePeerConnection();
AssurePeerConnection();
} else if (recieved.rtc === "disableWebRTC") {
console.log("disableWebRTC");
ResetPeerConnection();

169
proxy.js
View File

@@ -1,8 +1,10 @@
var titlepref = chrome.i18n.getMessage('titlePreface');
var webpref = chrome.i18n.getMessage('webPreface');
var ircpref = chrome.i18n.getMessage('ircPreface');
var torrentpref = chrome.i18n.getMessage('torrentPreface');
var routerpref = chrome.i18n.getMessage('routerPreface');
var routerprefpriv = chrome.i18n.getMessage('routerPrefacePrivate');
var ircpref = chrome.i18n.getMessage('ircPreface');
browser.privacy.network.peerConnectionEnabled.set({
value: true,
@@ -21,86 +23,119 @@ function shouldProxyRequest(requestInfo) {
}
var handleContextProxyRequest = async function(requestDetails) {
function ircProxy() {
if (!requestDetails.url.includes('7669')) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort(),
};
return proxy;
}
if (requestDetails.url.includes(':7669')) {
proxy = null;
return proxy;
}
}
function btProxy() {
proxy = routerProxy();
if (requestDetails.url.includes(':7662')) {
proxy = null;
return proxy;
}
console.log('(bt proxy)', proxy);
return proxy;
}
function mainProxy() {
console.log('(proxy) mainproxy 0');
proxy = {
type: getScheme(),
host: getHost(),
port: getPort(),
};
let url = new URL(requestDetails.url);
if (
requestDetails.url.startsWith(
'http://' + getHost() + ':' + getConsolePort() + '/i2psnark/'
)
) {
//+url.host)) {
console.log('(proxy) mainproxy 2', url);
proxy = null;
}
return proxy;
}
function routerProxy() {
if (routerHost(requestDetails.url)) {
proxy = null;
return proxy;
} else if (!routerHost(requestDetails.url)) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort(),
};
return proxy;
}
}
try {
var handleProxyRequest = function(context) {
proxy = {
failoverTimeout: 0,
proxyDns: false,
type: getScheme(),
host: getHost(),
port: getPort(),
};
if (context == 'firefox-default' || context == 'firefox-private') {
proxy = null;
return proxy;
}
console.log('(proxy), context', context);
if (context != undefined) {
if (context.name == titlepref) {
if (!requestDetails.url.includes('/i2psnark/')) {
console.log('URL', requestDetails.url);
proxy = {
type: getScheme(),
host: getHost(),
port: getPort(),
};
}
console.log('(proxy), context', context);
proxy = routerProxy();
if (context.name == ircpref) {
proxy = ircProxy();
return proxy;
} else if (context.name == ircpref) {
} else if (context.name == titlepref) {
proxy = mainProxy();
return proxy;
} else if (context.name == routerpref) {
proxy = routerProxy();
return proxy;
} else if (context.name == torrentpref) {
proxy = btProxy();
return proxy;
}
return proxy;
} else {
if (!routerHost(requestDetails.url)) {
if (localHost(requestDetails.url)) {
if (requestDetails.url.includes(':7669')) {
proxy = null;
} else if (requestDetails.url.includes(':7662')) {
proxy = null;
} else {
console.log(
'(proxy) non-routerconsole localhost url, will not interfere',
requestDetails.url
);
}
}
} else if (i2pHost(requestDetails.url)) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort(),
};
if (requestDetails.url.includes(':7669')) {
proxy = null;
}
} else if (context.name == routerpref) {
if (routerHost(requestDetails.url)) {
proxy = null;
} else if (!routerHost(requestDetails.url)) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort(),
};
}
return proxy;
} else if (context.name == webpref) {
if (localHost(requestDetails.url)) {
if (!routerHost(requestDetails.url)) {
proxy = {
type: 'http',
host: 'localhost',
port: '65535',
};
}
}
return proxy;
}
//var tab = tabGet(requestDetails.tabId);
//tab.then(handleTabRequest,)
return proxy;
}
if (!routerHost(requestDetails.url)) {
if (localHost(requestDetails.url)) {
if (requestDetails.url.includes(':7669')) {
proxy = null;
} else {
console.log(
'(proxy) non-routerconsole localhost url, will not interfere',
requestDetails.url
);
}
}
} else if (i2pHost(requestDetails.url)) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort(),
};
}
//var tab = tabGet(requestDetails.tabId);
//tab.then(handleTabRequest,)
return proxy;
};
var contextGet = async function(tabInfo) {
try {
console.log('(proxy)Tab info from Function', tabInfo);
context = await browser.contextualIdentities.get(tabInfo.cookieStoreId);
return context;
} catch (error) {
@@ -110,7 +145,6 @@ var handleContextProxyRequest = async function(requestDetails) {
};
var tabGet = async function(tabId) {
try {
console.log('(proxy)Tab ID from Request', tabId);
let tabInfo = await browser.tabs.get(tabId);
return tabInfo;
} catch (error) {
@@ -126,10 +160,6 @@ var handleContextProxyRequest = async function(requestDetails) {
return proxy;
}
if (requestDetails.originUrl == browser.runtime.getURL('security.html')) {
console.log(
'(proxy) extension security URL',
browser.runtime.getURL('security.html')
);
proxy = {
type: getScheme(),
host: getHost(),
@@ -144,6 +174,9 @@ var handleContextProxyRequest = async function(requestDetails) {
return browser.proxy.settings.get({});
}
if (requestDetails.tabId > 0) {
if (requestDetails.url.includes('MuWire')) {
return;
}
if (proxyHost(requestDetails.url)) {
proxy = {
type: getScheme(),
@@ -158,7 +191,7 @@ var handleContextProxyRequest = async function(requestDetails) {
requestDetails.tabId = tab;
var context = tab.then(contextGet);
var proxy = await context.then(handleProxyRequest);
console.log('(proxy)Returning I2P Proxy', proxy);
//console.log('(proxy)Returning I2P Proxy', proxy);
return proxy;
} else {
var tab = tabGet(requestDetails.tabId);
@@ -297,9 +330,9 @@ function getConsolePort() {
if (control_port == undefined) {
var scheme = getScheme();
if (scheme == 'socks') proxy_port = '7657';
else proxy_port = '7657';
else control_port = '7657';
}
return proxy_port;
return control_port;
}
function setupProxy() {

View File

@@ -4,13 +4,110 @@
<link type="text/html" rel="alternate" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases"/>
<link type="application/atom+xml" rel="self" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases.atom"/>
<title>Release notes from I2P-in-Private-Browsing-Mode-Firefox</title>
<updated>2020-11-08T02:44:07Z</updated>
<updated>2020-12-14T19:47:34Z</updated>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.91</id>
<updated>2020-12-14T19:47:59Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.91"/>
<title>0.91</title>
<enclosure url="magnet:?xt=urn:btih:991cc1181d816c20629caef454ebabf14785fbf7" type="application/x-bittorrent" />
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.91-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Exclude clearnet code hosting sites from scrub checks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Sat, 14 DEC 2020 2:46:23 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.89-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.89</id>
<updated>2020-12-13T19:11:13Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.89"/>
<title>0.89</title>
<content type="html">&lt;p&gt;============================&lt;/p&gt;
&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.89-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pages with lots of AJAX requests could trigger a performance degradation&lt;/li&gt;
&lt;li&gt;Improve performance of x-i2p-* headers and meta tags&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;i2psetproxy.js (0.87-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.87</id>
<updated>2020-12-06T18:37:57Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.87"/>
<title>0.87</title>
<content type="html">&lt;p&gt;Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.87-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Disable searching for i2p sites in non-i2p search engines&lt;/li&gt;
&lt;li&gt;Add contexts for i2pbote and Dispatch&lt;/li&gt;
&lt;li&gt;Remain in tighter control of x-i2p-torrentlocation priority&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Sat, 10 NOV 2020 1:33:50 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.85-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.85</id>
<updated>2020-11-11T06:44:44Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.85"/>
<title>0.85</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.85-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix a bug which was causing i2psnark to fail to isolate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Sat, 10 NOV 2020 1:33:50 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.83-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.83</id>
<updated>2020-11-11T04:00:27Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.83"/>
<title>0.83</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.83-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add a tab for I2P-Native Dispatch&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Sat, 10 NOV 2020 22:00:01 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.81-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.81</id>
<updated>2020-11-08T02:44:34Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.81"/>
<title>0.81</title>
<enclosure url="magnet:?xt=urn:btih:988d73b46899c1495eeea5ed137605ab277470be" type="application/x-bittorrent" />
<content type="html">&lt;p&gt;Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.81-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
@@ -98,102 +195,4 @@ i2psetproxy.js (0.73-1) UNRELEASED; urgency=low&lt;/p&gt;
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.71</id>
<updated>2020-03-24T23:01:20Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.71"/>
<title>0.71</title>
<content type="html">&lt;h1&gt;I2P in Private Browsing Mode&lt;/h1&gt;
&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.71-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix incomplete bugfix from 0.69&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Tue, 24 MAR 2020 0:19:59 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.69-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.69</id>
<updated>2020-03-24T04:19:44Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.69"/>
<title>0.69</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.69-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add MuWire contextual ID&lt;/li&gt;
&lt;li&gt;Fix bug occurring on certain modded I2P installs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Tue, 24 MAR 2020 0:12:02 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.67-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.67</id>
<updated>2020-03-18T04:27:30Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.67"/>
<title>0.67</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.67-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tweak some default settings that should have gone into 65&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Tue, 17 MAR 2020 22:58:55 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.65-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.65</id>
<updated>2020-03-18T03:01:20Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.65"/>
<title>0.65</title>
<content type="html">&lt;p&gt;Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.65-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Initial prototype of certs implementation&lt;/li&gt;
&lt;li&gt;Use &quot;pinned apptabs&quot; to minimize the number of tabs occupied by an app&lt;/li&gt;
&lt;li&gt;Get ready for self-hosted updates but with bittorrent because it&#39;s cooler&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Tue, 17 MAR 2020 22:58:55 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.63-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.63</id>
<updated>2020-03-02T23:01:58Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.63"/>
<title>0.63</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.63-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;other containerizers bugfix&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Mon, 02 MAR 2020 17:54:26 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.61-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
</feed>

329
script.js
View File

@@ -1,196 +1,151 @@
browser.runtime.onMessage.addListener((request) => {
var response = '';
var response = 'no-alt-location';
console.log(request);
if (request.req === 'i2p-location') {
response = 'no-alt-location';
const metas = document.getElementsByTagName('meta');
for (let i = 0; i < metas.length; i++) {
try {
tag = metas[i].getAttribute('http-equiv');
if (tag.toUpperCase() === 'I2P-LOCATION') {
response = metas[i].getAttribute('content');
}
if (tag.toUpperCase() === 'X-I2P-LOCATION') {
response = metas[i].getAttribute('content');
}
} catch {};
var tag = document.querySelector('meta[http-equiv="i2p-location"]');
if (tag != undefined) {
console.log(tag);
if (tag) response = tag.content;
}
var tag = document.querySelector('meta[http-equiv="x-i2p-location"]');
if (tag != undefined) {
console.log(tag);
if (tag) response = tag.content;
}
}
if (request.req === 'i2p-torrentlocation') {
response = 'no-alt-location';
const metas = document.getElementsByTagName('meta');
for (let i = 0; i < metas.length; i++) {
try {
tag = metas[i].getAttribute('http-equiv');
if (tag.toUpperCase() === 'I2P-TORRENTLOCATION') {
response = metas[i].getAttribute('content');
var imgs = document.getElementsByTagName('img');
for (let img of imgs) {
let tmpsrc = new URL(img.src);
if (tmpsrc.host == location.host) {
img.src =
'http://127.0.0.1:7657/i2psnark/' +
tmpsrc.host +
tmpsrc.pathname;
img.onerror = function() {
img.src = tmpsrc;
};
}
}
var links = document.getElementsByTagName('a');
console.log('Listing link', links);
for (let link of links) {
console.log('(Changing Link)', link);
let tmpsrc = new URL(link.href);
// console.log("link", tmpsrc.host, tmpsrc.pathname)
if (tmpsrc.host == location.host) {
if (
!tmpsrc.pathname.endsWith('html') &&
!tmpsrc.pathname.endsWith('htm') &&
!tmpsrc.pathname.endsWith('php') &&
!tmpsrc.pathname.endsWith('jsp') &&
!tmpsrc.pathname.endsWith('asp') &&
!tmpsrc.pathname.endsWith('aspx') &&
!tmpsrc.pathname.endsWith('atom') &&
!tmpsrc.pathname.endsWith('rss') &&
!tmpsrc.pathname.endsWith('/') &&
tmpsrc.pathname.includes('.')
) {
console.log('link', tmpsrc.host, tmpsrc.pathname);
link.href =
'http://127.0.0.1:7657/i2psnark/' +
tmpsrc.host +
tmpsrc.pathname;
link.onerror = function() {
window.location.href = tmpsrc.href;
};
}
//if (!tmpsrc.pathname.endsWith('html')) { // && !tmpsrc.pathname.endsWith('htm') &&
// !tmpsrc.pathname.endsWith('php') && !tmpsrc.pathname.endsWith('jsp') &&
// !tmpsrc.pathname.endsWith('asp') && !tmpsrc.pathname.endsWith('aspx') &&
// tmpsrc.pathname.includes('.') && !tmpsrc..pathname.endsWith('/')) {
//console.log('http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;)
//link.href = 'http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;
//link.onerror = function() {
//link.src = tmpsrc;
//};
//}
}
}
var videos = document.getElementsByTagName('video');
for (let video of videos) {
let tmpsrc = new URL(video.currentSrc);
if (tmpsrc.host == location.host) {
if (!video.innerHTML.includes('127.0.0.1')) {
innerHTML = video.innerHTML;
topInnerHTML = video.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
);
video.innerHTML = topInnerHTML + innerHTML;
}
}
}
var audios = document.getElementsByTagName('audio');
for (let audio of audios) {
let tmpsrc = new URL(audio.currentSrc);
if (tmpsrc.host == location.host) {
if (!audio.innerHTML.includes('127.0.0.1')) {
innerHTML = audio.innerHTML;
topInnerHTML = audio.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
);
audio.innerHTML = topInnerHTML + innerHTML;
}
}
}
}
if (tag.toUpperCase() === 'X-I2P-TORRENTLOCATION') {
response = metas[i].getAttribute('content');
var imgs = document.getElementsByTagName('img');
for (let img of imgs) {
let tmpsrc = new URL(img.src);
if (tmpsrc.host == location.host) {
img.src =
'http://127.0.0.1:7657/i2psnark/' +
tmpsrc.host +
tmpsrc.pathname;
img.onerror = function() {
img.src = tmpsrc;
};
}
}
var links = document.getElementsByTagName('a');
console.log('Listing link', links);
for (let link of links) {
console.log('(Changing Link)', link);
let tmpsrc = new URL(link.href);
//console.log("link", tmpsrc.host, tmpsrc.pathname)
if (tmpsrc.host == location.host) {
if (
!tmpsrc.pathname.endsWith('html') &&
!tmpsrc.pathname.endsWith('htm') &&
!tmpsrc.pathname.endsWith('php') &&
!tmpsrc.pathname.endsWith('jsp') &&
!tmpsrc.pathname.endsWith('asp') &&
!tmpsrc.pathname.endsWith('aspx') &&
!tmpsrc.pathname.endsWith('atom') &&
!tmpsrc.pathname.endsWith('rss') &&
!tmpsrc.pathname.endsWith('/') &&
tmpsrc.pathname.includes('.')
) {
console.log('link', tmpsrc.host, tmpsrc.pathname);
link.href =
'http://127.0.0.1:7657/i2psnark/' +
tmpsrc.host +
tmpsrc.pathname;
link.onerror = function() {
window.location.href = tmpsrc.href;
};
}
//if (!tmpsrc.pathname.endsWith('html')) { // && !tmpsrc.pathname.endsWith('htm') &&
// !tmpsrc.pathname.endsWith('php') && !tmpsrc.pathname.endsWith('jsp') &&
// !tmpsrc.pathname.endsWith('asp') && !tmpsrc.pathname.endsWith('aspx') &&
// tmpsrc.pathname.includes('.') && !tmpsrc..pathname.endsWith('/')) {
//console.log('http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;)
//link.href = 'http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;
//link.onerror = function() {
//link.src = tmpsrc;
//};
//}
}
}
var videos = document.getElementsByTagName('video');
for (let video of videos) {
let tmpsrc = new URL(video.currentSrc);
if (tmpsrc.host == location.host) {
if (!video.innerHTML.includes('127.0.0.1')) {
innerHTML = video.innerHTML;
topInnerHTML = video.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
);
video.innerHTML = topInnerHTML + innerHTML;
}
}
}
var audios = document.getElementsByTagName('audio');
for (let audio of audios) {
let tmpsrc = new URL(audio.currentSrc);
if (tmpsrc.host == location.host) {
if (!audio.innerHTML.includes('127.0.0.1')) {
innerHTML = audio.innerHTML;
topInnerHTML = audio.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
);
audio.innerHTML = topInnerHTML + innerHTML;
}
}
}
}
} catch {};
var tag = document.querySelector('meta[http-equiv="i2p-torrentlocation"]');
if (tag != undefined) {
console.log(tag);
response = i2pTorrent(tag);
}
var tag = document.querySelector(
'meta[http-equiv="x-i2p-torrentlocation"]'
);
if (tag != undefined) {
console.log(tag);
response = i2pTorrent(tag);
}
}
return Promise.resolve({ content: response });
});
window.document.onload = function (e) {
console.log("presetting x-i2p-torrentlocation");
var tag = document.querySelector('meta[http-equiv="i2p-torrentlocation"]');
if (tag != undefined) {
console.log(tag);
response = i2pTorrent(tag);
}
var tag = document.querySelector('meta[http-equiv="x-i2p-torrentlocation"]');
if (tag != undefined) {
console.log(tag);
response = i2pTorrent(tag);
}
};
console.log("presetting x-i2p-torrentlocation");
var tag = document.querySelector('meta[http-equiv="i2p-torrentlocation"]');
if (tag != undefined) {
console.log(tag);
response = i2pTorrent(tag);
}
var tag = document.querySelector('meta[http-equiv="x-i2p-torrentlocation"]');
if (tag != undefined) {
console.log(tag);
response = i2pTorrent(tag);
}
function i2pTorrent(tag) {
let response = "no-alt-location";
if (tag) {
response = tag.content;
var imgs = document.getElementsByTagName("img");
console.log("rewriting torrent link");
for (let img of imgs) {
let tmpsrc = new URL(img.src);
if (tmpsrc.host == location.host) {
img.src =
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
img.onerror = function () {
img.src = tmpsrc;
};
}
}
var videos = document.getElementsByTagName("video");
for (let video of videos) {
video.setAttribute("preload", "none");
let tmpsrc = new URL(video.currentSrc);
if (tmpsrc.host == location.host) {
if (!video.innerHTML.includes("127.0.0.1")) {
innerHTML = video.innerHTML;
topInnerHTML = video.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + "/"
);
// let url = new URL("http://127.0.0.1:7657/i2psnark/"+location.host+"/"location.path)
console.log(
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname
); //+"/"location.path)
video.src =
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
video.innerHTML = topInnerHTML; // + innerHTML;
video.onerror = function () {
console.log("video error");
video.innerHTML = topInnerHTML + innerHTML;
};
}
}
}
var audios = document.getElementsByTagName("audio");
for (let audio of audios) {
audio.setAttribute("preload", "none");
let tmpsrc = new URL(audio.currentSrc);
if (tmpsrc.host == location.host) {
if (!audio.innerHTML.includes("127.0.0.1")) {
innerHTML = audio.innerHTML;
topInnerHTML = audio.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + "/"
);
//console.log("http://127.0.0.1:7657/i2psnark/" + location); //.host+"/"location.path)
console.log(
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname
); //+"/"location.path)
audio.src =
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
audio.innerHTML = topInnerHTML; // + innerHTML;
audio.onerror = function () {
console.log("audio error");
audio.innerHTML = topInnerHTML + innerHTML;
};
}
}
}
var links = document.getElementsByTagName("a");
for (let link of links) {
let tmpsrc = new URL(link.href);
if (tmpsrc.host == location.host) {
if (
!tmpsrc.pathname.endsWith("html") &&
!tmpsrc.pathname.endsWith("htm") &&
!tmpsrc.pathname.endsWith("php") &&
!tmpsrc.pathname.endsWith("jsp") &&
!tmpsrc.pathname.endsWith("asp") &&
!tmpsrc.pathname.endsWith("aspx") &&
!tmpsrc.pathname.endsWith("atom") &&
!tmpsrc.pathname.endsWith("rss") &&
!tmpsrc.pathname.endsWith("/") &&
tmpsrc.pathname.includes(".")
) {
link.href =
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
link.onerror = function () {
window.location.href = tmpsrc.href;
};
}
}
}
}
return response;
}

645
scrub.js
View File

@@ -7,35 +7,20 @@ var tunnelpref = chrome.i18n.getMessage('i2ptunnelPreface');
var ircpref = chrome.i18n.getMessage('ircPreface');
var extensionpref = chrome.i18n.getMessage('extensionPreface');
var muwirepref = chrome.i18n.getMessage('muwirePreface');
var botepref = chrome.i18n.getMessage('botePreface');
var contextScrub = async function(requestDetails) {
function onHeaderError() {
console.log('Header scrub error');
}
//console.log("(scrub)Scrubbing info from contextualized request");
try {
var headerScrub = function(context) {
var ua = 'MYOB/6.66 (AN/ON)';
if (!context) {
} else if (context.name == titlepref) {
if (i2pHost(requestDetails.url)) {
for (var header of requestDetails.requestHeaders) {
if (header.name.toLowerCase() === 'user-agent') {
header.value = ua;
console.log('(scrub)User-Agent header modified', header.value);
}
}
}
return {
requestHeaders: requestDetails.requestHeaders,
};
} else if (context.name == routerpref) {
if (i2pHost(requestDetails.url)) {
for (var header of requestDetails.requestHeaders) {
if (header.name.toLowerCase() === 'user-agent') {
header.value = ua;
console.log('(scrub)User-Agent header modified', header.value);
}
for (var header of requestDetails.requestHeaders) {
if (header.name.toLowerCase() === 'user-agent') {
header.value = ua;
}
}
return {
@@ -64,23 +49,10 @@ var contextScrub = async function(requestDetails) {
}
};
if (requestDetails.tabId > 0) {
var tab = {};
var context = {};
var req = {};
if (i2pHost(requestDetails.url)) {
//console.log("(scrub)I2P URL detected, ");
tab = tabGet(requestDetails.tabId);
context = tab.then(contextGet, onHeaderError);
req = await context.then(headerScrub, onHeaderError);
//console.log("(scrub)Scrubbing I2P Request", req);
return req;
} else if (routerHost(requestDetails.url)) {
tab = tabGet(requestDetails.tabId);
context = tab.then(contextGet, onHeaderError);
req = await context.then(headerScrub, onHeaderError);
//console.log("(scrub)Scrubbing non-I2P Request", req);
return req;
}
tab = tabGet(requestDetails.tabId);
context = tab.then(contextGet, onHeaderError);
req = context.then(headerScrub, onHeaderError);
//console.log("(scrub)Scrubbing I2P Request", req);
return req;
}
} catch (error) {
@@ -111,6 +83,9 @@ var notMyContextNotMyProblem = async function() {
var context7 = await browser.contextualIdentities.query({
name: muwirepref,
});
var context7 = await browser.contextualIdentities.query({
name: botepref,
});
var othercontexts = [];
console.log('Contexts:', contexts);
for (context in contexts) {
@@ -241,7 +216,7 @@ var contextSetup = function(requestDetails) {
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 1 });
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
@@ -284,8 +259,8 @@ var contextSetup = function(requestDetails) {
name: titlepref,
});
let tmp = new URL(tabId.url);
console.log('tabid host', tmp.host);
if (!requestDetails.url.includes(tmp.host)) {
console.log('(isolate)tabid host', tmp.host);
if (!requestDetails.url.includes('snark/' + tmp.host)) {
// if (tabId.cookieStoreId != exemptContext[0].cookieStoreId){
function Create() {
function onCreated(tab) {
@@ -295,7 +270,7 @@ var contextSetup = function(requestDetails) {
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 2 });
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
@@ -343,7 +318,7 @@ var contextSetup = function(requestDetails) {
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 4 });
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
@@ -376,6 +351,53 @@ var contextSetup = function(requestDetails) {
console.log('(isolate)Context Error', error);
}
};
var i2pboteTabFind = async function(tabId) {
try {
var context = await browser.contextualIdentities.query({
name: botepref,
});
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log('(isolate) Closing un-isolated tab', tabId.id);
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
browser.tabs.remove(tabs[index].id);
}
}
var pins = browser.tabs.query({
cookieStoreId: context[0].cookieStoreId,
});
pins.then(closeOldTab, onError);
}
if (requestDetails.url.endsWith('xhr1.html')) {
hostname = url.split('/')[2];
let prefix = url.substr(0, url.indexOf('://') + 3);
requestDetails.url = prefix + hostname + '/i2pbote/';
}
var created = browser.tabs.create({
active: true,
pinned: true,
cookieStoreId: context[0].cookieStoreId,
url: requestDetails.url,
});
created.then(onCreated, onContextError);
}
var gettab = browser.tabs.get(tabId.id);
gettab.then(Create, onContextError);
return tabId;
}
} catch (error) {
console.log('(isolate)Context Error', error);
}
};
var mailTabFind = async function(tabId) {
try {
var context = await browser.contextualIdentities.query({
@@ -390,7 +412,7 @@ var contextSetup = function(requestDetails) {
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 3 });
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
@@ -438,6 +460,7 @@ var contextSetup = function(requestDetails) {
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
@@ -466,80 +489,6 @@ var contextSetup = function(requestDetails) {
console.log('(isolate)Context Error', error);
}
};
var normalTabFind = async function(tabId) {
if (tabId == undefined) {
return;
}
try {
var anoncontext = await browser.contextualIdentities.query({
name: titlepref,
});
var irccontext = await browser.contextualIdentities.query({
name: ircpref,
});
var othercontexts = await notMyContextNotMyProblem();
var nmp = false;
for (context in othercontexts) {
if (tabId.cookieStoreId == othercontexts[context].cookieStoreId) {
console.log('Not my problem');
nmp = true;
}
}
if (
tabId.cookieStoreId == 'firefox-default' ||
tabId.cookieStoreId == 'firefox-private' ||
tabId.cookieStoreId == anoncontext[0].cookieStoreId ||
tabId.cookieStoreId == irccontext[0].cookieStoreId ||
nmp
) {
console.log(
'(ISOLATE)',
tabId.cookieStoreId,
'not',
anoncontext[0].cookieStoreId,
irccontext[0].cookieStoreId
);
return;
} else {
function Create() {
function onCreated(tab) {
function closeOldTab() {
if (
tabId.id != tab.id &&
tabId.cookieStoreId != tab.cookieStoreId
) {
console.log(
'(isolate) Closing isolated tab',
tabId.id,
'with context',
tabId.cookieStoreId
);
console.log(
'(isolate) in favor of',
tab.id,
'with context',
tab.cookieStoreId
);
browser.tabs.remove(tabId.id);
}
}
closeOldTab(tab);
}
var created = browser.tabs.create({
active: true,
cookieStoreId: 'firefox-default',
url: requestDetails.url,
});
created.then(onCreated, onContextError);
}
var gettab = browser.tabs.get(tabId.id);
gettab.then(Create, onContextError);
return tabId;
}
} catch (error) {
console.log('(isolate)Context Error', error);
}
};
var tabGet = async function(tabId) {
try {
//console.log("(isolate)Tab ID from Request", tabId);
@@ -564,46 +513,72 @@ var contextSetup = function(requestDetails) {
if (requestDetails.tabId > 0) {
var tab = tabGet(requestDetails.tabId);
if (i2pHost(requestDetails.url)) {
var setcookie = browser.cookies.set({
firstPartyDomain: i2pHostName(requestDetails.url),
url: requestDetails.url,
secure: true,
});
setcookie.then(onContextGotLog, onContextError);
var i2ptab = tab.then(i2pTabFind, onContextError);
return requestDetails;
}
if (extensionHost(requestDetails)) {
return requestDetails;
}
let localhost = localHost(requestDetails.url);
let routerhost = routerHost(requestDetails.url);
if (routerhost) {
if (routerhost === 'i2ptunnelmgr') {
var tunneltab = tab.then(i2ptunnelTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'i2psnark') {
var snarktab = tab.then(snarkTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'webmail') {
var mailtab = tab.then(mailTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'muwire') {
var routertab = tab.then(muwireTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'routerconsole') {
var routertab = tab.then(routerTabFind, onContextError);
tab.then(isolate);
function isolate(oldtab) {
let localhost = localHost(requestDetails.url);
let routerhost = routerHost(requestDetails.url);
if (routerhost) {
if (routerhost === 'i2ptunnelmgr') {
var tunneltab = tab.then(i2ptunnelTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'i2psnark') {
var snarktab = tab.then(snarkTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'webmail') {
var mailtab = tab.then(mailTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'muwire') {
var routertab = tab.then(muwireTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'i2pbote') {
var routertab = tab.then(i2pboteTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'routerconsole') {
var routertab = tab.then(routerTabFind, onContextError);
return requestDetails;
}
} else {
if (localhost) {
var irctab = tab.then(ircTabFind, onContextError);
return requestDetails;
}
}
// if (oldtab.cookieStoreId == 'firefox-default') {
if (i2pHost(requestDetails.url)) {
var thn = i2pHostName(requestDetails.url);
if (requestDetails.url.includes('=' + thn)) {
if (
!requestDetails.url.includes('://github.com') ||
!requestDetails.url.includes('://notabug.org') ||
!requestDetails.url.includes('://i2pgit.org') ||
!requestDetails.url.includes('://gitlab.com')
) {
if (!localhost) {
console.log('(scrub)checking search hostnames =' + thn);
var tpt = requestDetails.url.split('=' + thn, 2);
requestDetails.url =
'http://' + thn + '/' + tpt[1].replace('%2F', '');
}
}
}
console.log('(scrub) new hostname', requestDetails.url);
var setcookie = browser.cookies.set({
firstPartyDomain: i2pHostName(requestDetails.url),
url: requestDetails.url,
secure: true,
});
setcookie.then(onContextGotLog, onContextError);
if (!routerhost) {
var i2ptab = tab.then(i2pTabFind, onContextError);
}
return requestDetails;
}
} else {
if (localhost) {
var irctab = tab.then(ircTabFind, onContextError);
if (extensionHost(requestDetails)) {
return requestDetails;
}
var normalTab = tab.then(normalTabFind, onContextError);
return requestDetails;
//return requestDetails;
//}
}
}
} catch (error) {
@@ -614,146 +589,108 @@ var contextSetup = function(requestDetails) {
var coolheadersSetup = function(e) {
var asyncSetPageAction = new Promise((resolve, reject) => {
window.setTimeout(() => {
for (i = 0; i < e.responseHeaders.length; i++) {
let header = e.responseHeaders[i];
if (e.url.startsWith('https')) {
if (
header.name.toUpperCase() === 'I2P-LOCATION' ||
header.name.toUpperCase() === 'X-I2P-LOCATION'
) {
browser.pageAction.setPopup({
tabId: e.tabId,
popup: 'location.html',
});
browser.pageAction.setIcon({
path: 'icons/i2plogo.png',
tabId: e.tabId,
});
browser.pageAction.setTitle({
tabId: e.tabId,
title: header.value,
});
browser.pageAction.show(e.tabId);
if (e.tabId != undefined) {
popup = browser.pageAction.getPopup({ tabId: e.tabId });
popup.then(gotPopup);
}
function gotPopup(p) {
console.log('(scrub) checking popup', p);
if (p.length != 0) return;
let headers = e.responseHeaders.filter((word) =>
word.name.toUpperCase().includes('I2P')
);
for (i = headers.length - 1; i >= 0; i--) {
let header = headers[i];
console.log('(scrub) checking header', header);
if (header.name.toUpperCase().endsWith('I2P-LOCATION')) {
var tab = browser.tabs.get(e.tabId);
tab.then(altSrc);
function altSrc(tab) {
console.log('(scrub) X-I2P-LOCATION');
let url = new URL(header.value);
browser.pageAction.setPopup({
tabId: e.tabId,
popup: 'location.html',
});
browser.pageAction.setIcon({
path: 'icons/i2plogo.png',
tabId: e.tabId,
});
let eurl = new URL(tab.url);
browser.pageAction.setTitle({
tabId: e.tabId,
title: 'http://' + url.host + eurl.pathname,
});
browser.pageAction.show(e.tabId);
}
break;
}
if (
header.name.toUpperCase() === 'I2P-TORRENTLOCATION' ||
header.name.toUpperCase() === 'X-I2P-TORRENTLOCATION'
) {
var imgs = document.getElementsByTagName('img');
for (let img of imgs) {
if (tmpsrc.host == location.host) {
img.src =
'http://127.0.0.1:7657/i2psnark/' +
tmpsrc.host +
tmpsrc.pathname;
img.onerror = function() {
img.src = tmpsrc;
};
}
}
var videos = document.getElementsByTagName('video');
for (let video of videos) {
let tmpsrc = new URL(video.currentSrc);
if (tmpsrc.host == location.host) {
if (!video.innerHTML.includes('127.0.0.1')) {
innerHTML = video.innerHTML;
topInnerHTML = video.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
);
video.innerHTML = topInnerHTML + innerHTML;
} else {
if (header.name.toUpperCase().endsWith('I2P-TORRENTLOCATION')) {
var imgs = document.getElementsByTagName('img');
for (let img of imgs) {
if (tmpsrc.host == location.host) {
img.src =
'http://127.0.0.1:7657/i2psnark/' +
tmpsrc.host +
tmpsrc.pathname;
img.onerror = function() {
img.src = tmpsrc;
};
}
}
}
var audios = document.getElementsByTagName('audio');
for (let audio of audios) {
let tmpsrc = new URL(audio.currentSrc);
if (tmpsrc.host == location.host) {
if (!audio.innerHTML.includes('127.0.0.1')) {
innerHTML = audio.innerHTML;
topInnerHTML = audio.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
);
audio.innerHTML = topInnerHTML + innerHTML;
var videos = document.getElementsByTagName('video');
for (let video of videos) {
let tmpsrc = new URL(video.currentSrc);
if (tmpsrc.host == location.host) {
if (!video.innerHTML.includes('127.0.0.1')) {
innerHTML = video.innerHTML;
topInnerHTML = video.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' +
location.host +
'/'
);
video.innerHTML = topInnerHTML; // + innerHTML;
video.onerror = function() {
video.innerHTML = topInnerHTML + innerHTML;
};
}
}
}
}
browser.pageAction.setPopup({
tabId: tabId.id,
popup: 'torrent.html',
});
browser.pageAction.setIcon({
path: 'icons/i2plogo.png',
tabId: e.tabId,
});
browser.pageAction.setTitle({
tabId: e.tabId,
title: header.value,
});
browser.pageAction.show(e.tabId);
break;
}
} else {
if (
header.name.toUpperCase() === 'I2P-TORRENTLOCATION' ||
header.name.toUpperCase() === 'X-I2P-TORRENTLOCATION'
) {
var imgs = document.getElementsByTagName('img');
for (let img of imgs) {
if (tmpsrc.host == location.host) {
img.src =
'http://127.0.0.1:7657/i2psnark/' +
tmpsrc.host +
tmpsrc.pathname;
img.onerror = function() {
img.src = tmpsrc;
};
}
}
var videos = document.getElementsByTagName('video');
for (let video of videos) {
let tmpsrc = new URL(video.currentSrc);
if (tmpsrc.host == location.host) {
if (!video.innerHTML.includes('127.0.0.1')) {
innerHTML = video.innerHTML;
topInnerHTML = video.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
);
video.innerHTML = topInnerHTML + innerHTML;
var audios = document.getElementsByTagName('audio');
for (let audio of audios) {
let tmpsrc = new URL(audio.currentSrc);
if (tmpsrc.host == location.host) {
if (!audio.innerHTML.includes('127.0.0.1')) {
innerHTML = audio.innerHTML;
topInnerHTML = audio.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' +
location.host +
'/'
);
audio.innerHTML = topInnerHTML; // + innerHTML;
audio.onerror = function() {
audio.innerHTML = topInnerHTML + innerHTML;
};
}
}
}
browser.pageAction.setPopup({
tabId: tabId.id,
popup: 'torrent.html',
});
browser.pageAction.setIcon({
path: 'icons/i2plogo.png',
tabId: e.tabId,
});
browser.pageAction.setTitle({
tabId: e.tabId,
title: header.value,
});
browser.pageAction.show(e.tabId);
break;
}
var audios = document.getElementsByTagName('audio');
for (let audio of audios) {
let tmpsrc = new URL(audio.currentSrc);
if (tmpsrc.host == location.host) {
if (!audio.innerHTML.includes('127.0.0.1')) {
innerHTML = audio.innerHTML;
topInnerHTML = audio.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
);
audio.innerHTML = topInnerHTML + innerHTML;
}
}
}
browser.pageAction.setPopup({
tabId: tabId.id,
popup: 'torrent.html',
});
browser.pageAction.setIcon({
path: 'icons/i2plogo.png',
tabId: e.tabId,
});
browser.pageAction.setTitle({
tabId: e.tabId,
title: header.value,
});
browser.pageAction.show(e.tabId);
break;
}
}
}
@@ -763,61 +700,105 @@ var coolheadersSetup = function(e) {
return asyncSetPageAction;
};
function getClearTab(tobj) {
function getTabURL(tab) {
if (tab.url.startsWith("https")) {
function getTabURL(tab) {
if (tab.url.startsWith("https")) {
try {
browser.tabs
.sendMessage(tab.id, { req: "i2p-location" })
.then((response) => {
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
browser.pageAction.setPopup({
tabId: tab.id,
popup: "location.html",
});
browser.pageAction.setIcon({
path: "icons/i2plogo.png",
tabId: tab.id,
});
browser.pageAction.setTitle({
tabId: tab.id,
title: response.content,
});
browser.pageAction.show(tab.id);
if (response != undefined) {
console.log("(scrub) i2p-location response object", response);
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
browser.pageAction.setPopup({
tabId: tab.id,
popup: "location.html",
});
browser.pageAction.setIcon({
path: "icons/i2plogo.png",
tabId: tab.id,
});
browser.pageAction.setTitle({
tabId: tab.id,
title: response.content,
});
browser.pageAction.show(tab.id);
}
}
});
console.log("(pageaction)", tab.id, tab.url);
} else {
} catch (e) {
console.log("(pageaction)", e);
}
} else {
try {
browser.tabs
.sendMessage(tab.id, { req: "i2p-torrentlocation" })
.then((response) => {
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
browser.pageAction.setPopup({
tabId: tab.id,
popup: "torrent.html",
});
browser.pageAction.setIcon({
path: "icons/i2plogo.png",
tabId: tab.id,
});
browser.pageAction.setTitle({
tabId: tab.id,
title: response.content,
});
browser.pageAction.show(tab.id);
if (response != undefined) {
console.log("(scrub) i2p-location response object", response);
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
browser.pageAction.setPopup({
tabId: tab.id,
popup: "torrent.html",
});
browser.pageAction.setIcon({
path: "icons/i2plogo.png",
tabId: tab.id,
});
browser.pageAction.setTitle({
tabId: tab.id,
title: response.content,
});
browser.pageAction.show(tab.id);
}
}
});
console.log("(pageaction)", tab.id, tab.url);
} catch (e) {
console.log("(pageaction)", e);
}
}
if (typeof tobj == "number") {
browser.tabs.get(tobj).then(getTabURL, onError);
} else {
browser.tabs.get(tobj.tabId).then(getTabURL, onError);
}
}
function getClearTab(tobj) {
function setupTabs(tobj) {
if (typeof tobj == "number") {
browser.tabs.get(tobj).then(getTabURL, onError);
}
if (typeof tobj.tabId == "number") {
console.log("(scrub) tobj", tobj);
browser.tabs.get(tobj.tabId).then(getTabURL, onError);
} else {
for (let tab in tobj.tabIds) {
console.log("(scrub) tab", tobj.tabIds[tab]);
browser.tabs.get(tobj.tabIds[tab]).then(getTabURL, onError);
}
}
}
if (tobj != undefined) {
setupTabs(tobj);
} else {
browser.tabs.query({}).then(setupTabs);
}
}
const filter = {
url: [{ hostContains: ".i2p" }],
};
function logOnDOMContentLoaded(details) {
console.log(`onDOMContentLoaded: ${details.url}`);
}
browser.tabs.onActivated.addListener(getClearTab);
browser.tabs.onUpdated.addListener(getClearTab);
browser.tabs.onAttached.addListener(getClearTab);
browser.tabs.onCreated.addListener(getClearTab);
browser.tabs.onDetached.addListener(getClearTab);
browser.tabs.onHighlighted.addListener(getClearTab);
browser.tabs.onMoved.addListener(getClearTab);
browser.tabs.onReplaced.addListener(getClearTab);
browser.pageAction.onClicked.addListener(getClearTab);
function reloadTabs(tabs) {
for (let tab of tabs) {
@@ -836,18 +817,22 @@ querying.then(reloadTabs, onError);
// Set "blocking" and "responseHeaders".
browser.webRequest.onHeadersReceived.addListener(
coolheadersSetup,
{ urls: ["<all_urls>"] },
["blocking", "responseHeaders"]
{ urls: ["*://*.i2p/*", "https://*/*"] },
["responseHeaders"]
);
browser.webRequest.onBeforeRequest.addListener(
contextSetup,
{ urls: ["<all_urls>"] },
["blocking"]
browser.webNavigation.onDOMContentLoaded.addListener(getClearTab, filter);
browser.webNavigation.onDOMContentLoaded.addListener(
logOnDOMContentLoaded,
filter
);
browser.webRequest.onBeforeRequest.addListener(contextSetup, {
urls: ["*://*.i2p/*", "*://localhost/*", "*://127.0.0.1/*", "*://*/*i2p*"],
});
browser.webRequest.onBeforeSendHeaders.addListener(
contextScrub,
{ urls: ["<all_urls>"] },
["blocking", "requestHeaders"]
{ urls: ["*://*.i2p/*"] },
["requestHeaders"]
);

View File

@@ -3,8 +3,7 @@
<head>
<meta charset="utf-8">
<link href="search.css" rel="stylesheet">
<link href="home.css" rel="stylesheet">
<link href="info.css" rel="stylesheet"><!--<link href="torrent/popup.css" rel="stylesheet">-->
<link href="home.css" rel="stylesheet"><!--<link href="info.css" rel="stylesheet">--><!--<link href="torrent/popup.css" rel="stylesheet">-->
<title>
</title>

View File

@@ -14,4 +14,10 @@ button {
}
.button-list {
display: inline
}
#hidden {
display: none
}
.hidden {
display: none
}

View File

@@ -4,7 +4,7 @@
<meta charset="utf-8">
<link href="search.css" rel="stylesheet">
<link href="home.css" rel="stylesheet">
<link href="info.css" rel="stylesheet"><!--<link href="torrent/popup.css" rel="stylesheet">-->
<!--<link href="info.css" rel="stylesheet">--><!--<link href="torrent/popup.css" rel="stylesheet">-->
<title>
</title>

View File

@@ -40,6 +40,7 @@
<div id="i2pbrowser-description">
<p id="description">You are now able to use I2P in this browser.</p>
<button class="hidden" id="visit-irc">Visit IRC</button>
</div>
</div>