Reverse application priority of header checks and http-equiv checks

This commit is contained in:
idk
2021-10-01 14:14:56 -04:00
parent 31af292a47
commit 97146391e8
8 changed files with 583 additions and 569 deletions

View File

@@ -1,18 +1,18 @@
var proxy_scheme = 'HTTP';
var proxy_host = '127.0.0.1';
var proxy_port = '4444';
var proxy_scheme = "HTTP";
var proxy_host = "127.0.0.1";
var proxy_port = "4444";
var control_host = '127.0.0.1';
var control_port = '7657';
var control_host = "127.0.0.1";
var control_port = "7657";
var rpc_host = '127.0.0.1';
var rpc_port = '7657';
var rpc_path = 'jsonrpc';
var rpc_pass = 'itoopie';
var rpc_host = "127.0.0.1";
var rpc_port = "7657";
var rpc_path = "jsonrpc";
var rpc_pass = "itoopie";
var bt_rpc_host = '127.0.0.1';
var bt_rpc_port = '7657';
var bt_rpc_path = 'transmission/rpc';
var bt_rpc_pass = 'transmission';
var bt_rpc_host = "127.0.0.1";
var bt_rpc_port = "7657";
var bt_rpc_path = "transmission/rpc";
var bt_rpc_pass = "transmission";
var disable_history = false;

View File

@@ -1,73 +1,73 @@
function routerHost(url) {
// console.log("(urlcheck) HANDLER URL CHECK");
let hostname = '';
let path = '';
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') {
console.log('(urlcheck) Tunnel application path', final);
return 'i2ptunnelmgr';
let final = str.split("/")[0];
if (final === "i2ptunnelmgr" || final === "i2ptunnel") {
console.log("(urlcheck) Tunnel application path", final);
return "i2ptunnelmgr";
} else if (
final === 'i2psnark' ||
final === 'torrents' ||
final.startsWith('transmission') ||
final.startsWith('tracker') ||
url.includes(':7662')
final === "i2psnark" ||
final === "torrents" ||
final.startsWith("transmission") ||
final.startsWith("tracker") ||
url.includes(":7662")
) {
console.log('(urlcheck) Torrent application path', final);
return 'i2psnark';
} else if (final === 'webmail' || final === 'susimail') {
if (!url.includes('.css')) {
console.log('(urlcheck) Mail application path', final);
return 'webmail';
console.log("(urlcheck) Torrent application path", final);
return "i2psnark";
} else if (final === "webmail" || final === "susimail") {
if (!url.includes(".css")) {
console.log("(urlcheck) Mail application path", final);
return "webmail";
}
} else if (final.startsWith('MuWire')) {
if (!url.includes('.png')) {
console.log('(urlcheck) MuWire application path', final);
return 'muwire';
} else if (final.startsWith("MuWire")) {
if (!url.includes(".png")) {
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.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')
final === "home" ||
final === "console" ||
final === "dns" ||
final === "susidns" ||
final.startsWith("susidns") ||
final === "sitemap" ||
final.startsWith("config")
) {
console.log('(urlcheck) Console application path', final);
return 'routerconsole';
console.log("(urlcheck) Console application path", final);
return "routerconsole";
}
}
return true;
}
if (url.indexOf('://') > -1) {
hostname = url.split('/')[2];
let prefix = url.substr(0, url.indexOf('://') + 3);
path = url.replace(prefix + hostname + '/', '');
if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
let prefix = url.substr(0, url.indexOf("://") + 3);
path = url.replace(prefix + hostname + "/", "");
} else if (identifyProtocolHandler(url)) {
let newurl = identifyProtocolHandler(url);
return routerHost(newurl);
} else {
hostname = url.split('/')[0];
path = url.replace(hostname + '/', '');
hostname = url.split("/")[0];
path = url.replace(hostname + "/", "");
}
if (hostname === control_host + ':' + control_port) {
if (hostname === control_host + ":" + control_port) {
//console.log("(hostcheck) router console found on configured ports");
return pathcheck(path);
}
if (hostname === 'localhost' + ':' + control_port) {
if (hostname === "localhost" + ":" + control_port) {
//console.log("(hostcheck) router console found on configured ports");
return pathcheck(path);
}
if (hostname === '127.0.0.1' + ':' + control_port) {
if (hostname === "127.0.0.1" + ":" + control_port) {
return pathcheck(path);
}
@@ -77,36 +77,36 @@ function routerHost(url) {
function identifyProtocolHandler(url) {
//console.log("looking for handler-able requests")
if (routerHost(url)) {
if (url.includes(encodeURIComponent('ext+rc:'))) {
return url.replace(encodeURIComponent('ext+rc:'), '');
} else if (url.includes('ext+rc:')) {
return url.replace('ext+rc:', '');
if (url.includes(encodeURIComponent("ext+rc:"))) {
return url.replace(encodeURIComponent("ext+rc:"), "");
} else if (url.includes("ext+rc:")) {
return url.replace("ext+rc:", "");
}
} else if (url.includes('ext+rc:')) {
} else if (url.includes("ext+rc:")) {
return url;
}
return false;
}
function trimHost(url) {
let hostname = '';
let prefix = '';
if (url.indexOf('://') > -1) {
prefix = url.substr(0, url.indexOf('://') + 3);
hostname = url.split('/')[2];
let hostname = "";
let prefix = "";
if (url.indexOf("://") > -1) {
prefix = url.substr(0, url.indexOf("://") + 3);
hostname = url.split("/")[2];
} else {
hostname = url.split('/')[0];
hostname = url.split("/")[0];
}
let path = url.replace(prefix + hostname, '');
console.log('(handler) path', prefix + hostname, path);
let path = url.replace(prefix + hostname, "");
console.log("(handler) path", prefix + hostname, path);
return path;
}
var handlerSetup = function(requestDetails) {
var handlerSetup = function (requestDetails) {
//console.log("checking protocol handler listener")
let rwurl = identifyProtocolHandler(requestDetails.url);
if (rwurl != false) {
console.log('(handler) rewrite URL requested', rwurl);
console.log("(handler) rewrite URL requested", rwurl);
requestDetails.redirectUrl = rwurl;
requestDetails.url = trimHost(rwurl);
requestDetails.originUrl = trimHost(rwurl);

168
host.js
View File

@@ -1,15 +1,15 @@
function proxyHost(url) {
let hostname = '';
if (url.indexOf('://') > -1) {
hostname = url.split('/')[2];
let hostname = "";
if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
} else {
hostname = url.split('/')[0];
hostname = url.split("/")[0];
}
if (hostname == 'proxy.i2p') {
if (hostname == "proxy.i2p") {
return true;
}
if (
hostname == 'c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p'
hostname == "c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p"
) {
return true;
}
@@ -17,21 +17,21 @@ function proxyHost(url) {
}
function localHost(url) {
let hostname = '';
if (url.indexOf('://') > -1) {
hostname = url.split('/')[2];
let hostname = "";
if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
} else {
hostname = url.split('/')[0];
hostname = url.split("/")[0];
}
hostname = hostname.split(':')[0];
console.log('(urlcheck) hostname localhost', hostname);
console.log('(urlcheck) url localhost', url);
if (hostname === '127.0.0.1') {
if (url.indexOf('\:8084') != -1) return 'blog';
if (url.indexOf('\:7669') != -1) return 'irc';
} else if (hostname === 'localhost') {
if (url.indexOf('\:8084') != -1) return 'blog';
if (url.indexOf('\:7669') != -1) return 'irc';
hostname = hostname.split(":")[0];
console.log("(urlcheck) hostname localhost", hostname);
console.log("(urlcheck) url localhost", url);
if (hostname === "127.0.0.1") {
if (url.indexOf(":8084") != -1) return "blog";
if (url.indexOf(":7669") != -1) return "irc";
} else if (hostname === "localhost") {
if (url.indexOf(":8084") != -1) return "blog";
if (url.indexOf(":7669") != -1) return "irc";
}
return false;
@@ -39,13 +39,13 @@ function localHost(url) {
function extensionHost(url) {
var prefix = browser.runtime
.getURL('')
.replace('moz-extension://', '')
.replace('/', '');
.getURL("")
.replace("moz-extension://", "")
.replace("/", "");
if (url.originUrl !== undefined) {
var originUrl = url.originUrl
.replace('moz-extension://', '')
.replace('/', '');
.replace("moz-extension://", "")
.replace("/", "");
// console.log("(urlcheck) Extension application path", originUrl);
// console.log("(urlcheck) Extension application path", prefix);
var res = originUrl.startsWith(prefix);
@@ -59,118 +59,118 @@ function extensionHost(url) {
// console.log("(urlcheck) Extension application path", res);
if (res) return res;
}
console.log('(urlcheck) Extension application path', url);
console.log("(urlcheck) Extension application path", url);
}
function i2pHostName(url) {
let hostname = '';
console.log('(hosts)', url);
let hostname = "";
console.log("(hosts)", url);
let u = new URL(url);
if (u.host.endsWith('.i2p')) {
if (u.host.endsWith(".i2p")) {
hostname = u.host;
} else if (url.includes('=')) {
if (url.includes('.i2p')) {
lsit = url.split('=');
} 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);
if (items[p].includes(".i2p")) {
hostname = items[p].replace("3D", 1);
}
break;
}
if (hostname != '') {
if (hostname != "") {
break;
}
}
}
} else if (url.indexOf('://') > -1) {
hostname = url.split('/')[2];
} else if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
} else {
hostname = url.split('/')[0];
hostname = url.split("/")[0];
}
console.log('(hosts) scrub', hostname);
console.log("(hosts) scrub", hostname);
return hostname;
}
function i2pHost(url) {
let hostname = i2pHostName(url);
return hostname.endsWith('.i2p');
return hostname.endsWith(".i2p");
}
function routerHost(url) {
// console.log("(urlcheck) HOST URL CHECK");
let hostname = '';
let path = '';
let hostname = "";
let path = "";
function pathcheck(str) {
if (str != undefined) {
let final = str.split('/')[0];
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
console.log('(urlcheck) Tunnel application path', final);
return 'i2ptunnelmgr';
let final = str.split("/")[0];
if (final === "i2ptunnelmgr" || final === "i2ptunnel") {
console.log("(urlcheck) Tunnel application path", final);
return "i2ptunnelmgr";
} else if (
final === 'i2psnark' ||
final === 'torrents' ||
final.startsWith('transmission') ||
final.startsWith('tracker') ||
url.includes(':7662')
final === "i2psnark" ||
final === "torrents" ||
final.startsWith("transmission") ||
final.startsWith("tracker") ||
url.includes(":7662")
) {
console.log('(urlcheck) Torrent application path', final);
return 'i2psnark';
} else if (final === 'webmail' || final === 'susimail') {
if (!url.includes('.css')) {
console.log('(urlcheck) Mail application path', final);
return 'webmail';
console.log("(urlcheck) Torrent application path", final);
return "i2psnark";
} else if (final === "webmail" || final === "susimail") {
if (!url.includes(".css")) {
console.log("(urlcheck) Mail application path", final);
return "webmail";
}
} else if (final.startsWith('MuWire')) {
if (!url.includes('.png')) {
console.log('(urlcheck) MuWire application path', final);
return 'muwire';
} else if (final.startsWith("MuWire")) {
if (!url.includes(".png")) {
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.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')
final === "home" ||
final === "console" ||
final === "dns" ||
final === "susidns" ||
final.startsWith("susidns") ||
final === "sitemap" ||
final.startsWith("config")
) {
console.log('(urlcheck) Console application path', final);
return 'routerconsole';
console.log("(urlcheck) Console application path", final);
return "routerconsole";
}
}
return true;
}
if (url.indexOf('://') > -1) {
hostname = url.split('/')[2];
let prefix = url.substr(0, url.indexOf('://') + 3);
path = url.replace(prefix + hostname + '/', '');
if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
let prefix = url.substr(0, url.indexOf("://") + 3);
path = url.replace(prefix + hostname + "/", "");
} else if (identifyProtocolHandler(url)) {
let newurl = identifyProtocolHandler(url);
return routerHost(newurl);
} else {
hostname = url.split('/')[0];
path = url.replace(hostname + '/', '');
hostname = url.split("/")[0];
path = url.replace(hostname + "/", "");
}
if (hostname === control_host + ':' + control_port) {
if (hostname === control_host + ":" + control_port) {
return pathcheck(path);
}
if (hostname === 'localhost' + ':' + control_port) {
if (hostname === "localhost" + ":" + control_port) {
return pathcheck(path);
}
if (hostname === '127.0.0.1' + ':' + control_port) {
if (hostname === "127.0.0.1" + ":" + control_port) {
return pathcheck(path);
}
if (hostname === 'localhost' + ':' + 7070) {
if (hostname === "localhost" + ":" + 7070) {
return pathcheck(path);
}
if (hostname === '127.0.0.1' + ':' + 7070) {
if (hostname === "127.0.0.1" + ":" + 7070) {
return pathcheck(path);
}
return false;

View File

@@ -1,415 +1,420 @@
if (browser.windows != undefined) {
var hello = 'hello i2pcontrol';
var hello = "hello i2pcontrol";
function makeid(length) {
var result = '';
var characters =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
function send(
message,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
async function postData(url = "", data = {}) {
// Default options are marked with *
let requestBody = JSON.stringify(data);
//console.log("(i2pcontrol) sending request", requestBody);
let opts = {
method: 'POST', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, *cors, same-origin
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
credentials: 'same-origin', // include, *same-origin, omit
headers: {
'Content-Type': 'application/json'
},
redirect: 'follow', // manual, *follow, error
referrerPolicy: 'no-referrer', // no-referrer, *client
body: requestBody // body data type must match "Content-Type" header
};
const response = await fetch(url, opts);
return await response.json(); // parses JSON response into native JavaScript objects
function makeid(length) {
var result = "";
var characters =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
//console.log("http://" + control_host + ":" + control_port + "/" + control_path)
return postData(
'http://' + control_host + ':' + control_port + '/' + control_path + '/',
message
);
}
function send(
message,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
async function postData(url = "", data = {}) {
// Default options are marked with *
let requestBody = JSON.stringify(data);
//console.log("(i2pcontrol) sending request", requestBody);
let opts = {
method: "POST", // *GET, POST, PUT, DELETE, etc.
mode: "cors", // no-cors, *cors, same-origin
cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
credentials: "same-origin", // include, *same-origin, omit
headers: {
"Content-Type": "application/json",
},
redirect: "follow", // manual, *follow, error
referrerPolicy: "no-referrer", // no-referrer, *client
body: requestBody, // body data type must match "Content-Type" header
};
const response = await fetch(url, opts);
return await response.json(); // parses JSON response into native JavaScript objects
}
async function authenticate(
password = "itoopie",
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'Authenticate';
json['params'] = new Object();
json['params']['API'] = 1;
json['params']['Password'] = password;
return send(json, control_host, control_port, control_path);
}
async function GetToken(
password = "itoopie",
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function gettoken(authtoken) {
return authtoken.result.Token;
//console.log("http://" + control_host + ":" + control_port + "/" + control_path)
return postData(
"http://" + control_host + ":" + control_port + "/" + control_path + "/",
message
);
}
let me = authenticate(password, control_host, control_port, control_path);
return await me.then(gettoken);
}
async function Echo(
message,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function echo(token) {
console.log('(i2pcontrol) testing I2PControl connection');
async function authenticate(
password = "itoopie",
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'Echo';
json['params'] = new Object();
json['params']['Token'] = token;
json['params']['Echo'] = message;
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "Authenticate";
json["params"] = new Object();
json["params"]["API"] = 1;
json["params"]["Password"] = password;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(echo);
return done;
}
function UpdateEchoElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
async function GetToken(
password = "itoopie",
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function gettoken(authtoken) {
return authtoken.result.Token;
}
let me = authenticate(password, control_host, control_port, control_path);
return await me.then(gettoken);
}
let net = Echo(Query, control_host, control_port, control_path, password);
net.then(updateleement);
}
async function GetRate(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function getrate(token) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'I2PControl';
json['params'] = new Object();
json['params']['Token'] = token;
json['params']['Stat'] = Query;
json['params']['Period'] = 2000;
return send(json, control_host, control_port, control_path);
async function Echo(
message,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function echo(token) {
console.log("(i2pcontrol) testing I2PControl connection");
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "Echo";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"]["Echo"] = message;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(echo);
return done;
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(getrate);
return done;
}
function UpdateGetRateElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = GetRate(Query, control_host, control_port, control_path, password);
net.then(updateleement);
}
async function I2PControl(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function i2pcontrol(token) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'I2PControl';
json['params'] = new Object();
json['params']['Token'] = token;
json['params'][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(i2pcontrol);
return done;
}
function UpdateI2PControlElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = I2PControl(
function UpdateEchoElementByID(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
async function RouterInfo(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function routerinfo(token) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'RouterInfo';
json['params'] = new Object();
json['params']['Token'] = token;
json['params'][Query] = null;
return send(json, control_host, control_port, control_path);
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = Echo(Query, control_host, control_port, control_path, password);
net.then(updateleement);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(routerinfo);
return done;
}
function UpdateRouterInfoElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
/*console.log(
async function GetRate(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function getrate(token) {
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "I2PControl";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"]["Stat"] = Query;
json["params"]["Period"] = 2000;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(getrate);
return done;
}
function UpdateGetRateElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = GetRate(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
async function I2PControl(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function i2pcontrol(token) {
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "I2PControl";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(i2pcontrol);
return done;
}
function UpdateI2PControlElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = I2PControl(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
async function RouterInfo(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function routerinfo(token) {
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "RouterInfo";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(routerinfo);
return done;
}
function UpdateRouterInfoElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
/*console.log(
"(i2pcontrol) element",
update.result[Query],
ID,
document.getElementById(ID)
);*/
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update.result[Query];
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update.result[Query];
}
let net = RouterInfo(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateelement);
}
let net = RouterInfo(
async function RouterManager(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateelement);
}
async function RouterManager(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function routermanager(token) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'RouterManager';
json['params'] = new Object();
json['params']['Token'] = token;
json['params'][Query] = null;
return send(json, control_host, control_port, control_path);
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function routermanager(token) {
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "RouterManager";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(routermanager);
return done;
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(routermanager);
return done;
}
function UpdateRouterManagerElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
function UpdateRouterManagerElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = RouterManager(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
async function NetworkSetting(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function networksetting(token) {
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "NetworkSetting";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(networksetting);
return done;
}
function UpdateNetworkSettingElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
document.getElementById(ID).innerText = update;
}
let net = RouterManager(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
async function NetworkSetting(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function networksetting(token) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'NetworkSetting';
json['params'] = new Object();
json['params']['Token'] = token;
json['params'][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(networksetting);
return done;
}
function UpdateNetworkSettingElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
document.getElementById(ID).innerText = update;
}
let net = NetworkSetting(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
function UpdateContents() {
UpdateRouterInfoElementByID('i2p.router.status', 'router-status');
UpdateRouterInfoElementByID('i2p.router.uptime', 'router-uptime');
UpdateRouterInfoElementByID('i2p.router.version', 'router-version');
UpdateRouterInfoElementByID(
'i2p.router.net.bw.inbound.1s',
'router-net-bw-inbound-1s'
);
UpdateRouterInfoElementByID(
'i2p.router.net.bw.inbound.15s',
'router-net-bw-inbound-15s'
);
UpdateRouterInfoElementByID(
'i2p.router.net.bw.outbound.1s',
'router-net-bw-outbound-1s'
);
UpdateRouterInfoElementByID(
'i2p.router.net.bw.outbound.15s',
'router-net-bw-outbound-15s'
);
UpdateRouterInfoElementByID('i2p.router.net.status', 'router-net-status');
UpdateRouterInfoElementByID(
'i2p.router.net.tunnels.participating',
'router-net-tunnels-participating'
);
UpdateRouterInfoElementByID(
'i2p.router.netdb.activepeers',
'router-netdb-activepeers'
);
UpdateRouterInfoElementByID(
'i2p.router.netdb.fastpeers',
'router-netdb-fastpeers'
);
UpdateRouterInfoElementByID(
'i2p.router.netdb.highcapacitypeers',
'router-netdb-highcapacitypeers'
);
UpdateRouterInfoElementByID(
'i2p.router.netdb.isreseeding',
'router-netdb-isreseeding'
);
UpdateRouterInfoElementByID(
'i2p.router.netdb.knownpeers',
'router-netdb-knownpeers'
);
}
var done = Echo(hello);
done.then(Done).catch (Done);
function Done(output) {
function hide(elements) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = 'none';
}
let net = NetworkSetting(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
function unhide(elements) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = 'inline-block';
function UpdateContents() {
UpdateRouterInfoElementByID("i2p.router.status", "router-status");
UpdateRouterInfoElementByID("i2p.router.uptime", "router-uptime");
UpdateRouterInfoElementByID("i2p.router.version", "router-version");
UpdateRouterInfoElementByID(
"i2p.router.net.bw.inbound.1s",
"router-net-bw-inbound-1s"
);
UpdateRouterInfoElementByID(
"i2p.router.net.bw.inbound.15s",
"router-net-bw-inbound-15s"
);
UpdateRouterInfoElementByID(
"i2p.router.net.bw.outbound.1s",
"router-net-bw-outbound-1s"
);
UpdateRouterInfoElementByID(
"i2p.router.net.bw.outbound.15s",
"router-net-bw-outbound-15s"
);
UpdateRouterInfoElementByID("i2p.router.net.status", "router-net-status");
UpdateRouterInfoElementByID(
"i2p.router.net.tunnels.participating",
"router-net-tunnels-participating"
);
UpdateRouterInfoElementByID(
"i2p.router.netdb.activepeers",
"router-netdb-activepeers"
);
UpdateRouterInfoElementByID(
"i2p.router.netdb.fastpeers",
"router-netdb-fastpeers"
);
UpdateRouterInfoElementByID(
"i2p.router.netdb.highcapacitypeers",
"router-netdb-highcapacitypeers"
);
UpdateRouterInfoElementByID(
"i2p.router.netdb.isreseeding",
"router-netdb-isreseeding"
);
UpdateRouterInfoElementByID(
"i2p.router.netdb.knownpeers",
"router-netdb-knownpeers"
);
}
var done = Echo(hello);
done.then(Done).catch(Done);
function Done(output) {
function hide(elements) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = "none";
}
}
}
console.log('(i2pcontrol) I2PControl connection tested,', output);
if (output == hello) {
var toopieLinks = document.querySelectorAll('.window-visit-toopie');
unhide(toopieLinks);
} else {
var toopieLinks = document.querySelectorAll('.window-visit-toopie');
hide(toopieLinks);
function unhide(elements) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = "inline-block";
}
}
console.log("(i2pcontrol) I2PControl connection tested,", output);
if (output == hello) {
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
unhide(toopieLinks);
} else {
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
hide(toopieLinks);
}
return output;
}
return output;
}
}

View File

@@ -1,12 +1,12 @@
function gotCurrent(tab) {
function gotTitle(title) {
let addr = title;
document.getElementById('TypeInfo').innerHTML =
'<div class="AddressInfo"><a href="' + addr + '">' + addr + '</a></div>';
document.getElementById("TypeInfo").innerHTML =
'<div class="AddressInfo"><a href="' + addr + '">' + addr + "</a></div>";
}
console.log(tab);
var gettingTitle = browser.pageAction.getTitle({
tabId: tab[0].id
tabId: tab[0].id,
});
gettingTitle.then(gotTitle);
}

View File

@@ -441,14 +441,15 @@ var coolheadersSetup = function(e) {
popup.then(gotPopup);
}
function gotPopup(p) {
console.log('(scrub) checking popup', p);
if (p.length != 0) return;
console.log('(scrub)(header check) checking popup', p);
console.log('(scrub)(header check) checking headers', e.responseHeaders);
let headers = e.responseHeaders.filter((word) =>
word.name.toUpperCase().includes('I2P')
);
console.log('(scrub)(header check) checking filtered headers', headers);
for (i = headers.length - 1; i >= 0; i--) {
let header = headers[i];
console.log('(scrub) checking header', header);
console.log('(scrub)(header check) checking header', header);
if (header.name.toUpperCase().endsWith('I2P-LOCATION')) {
var tab = browser.tabs.get(e.tabId);
tab.then(altSrc);
@@ -473,7 +474,7 @@ var coolheadersSetup = function(e) {
break;
}
if (header.name.toUpperCase().endsWith('I2P-TORRENTLOCATION')) {
console.log('(scrub) checking header torrentlocation', header);
console.log('(scrub)(header check) checking header torrentlocation', header);
var imgs = document.getElementsByTagName('img');
for (let img of imgs) {
if (tmpsrc.host == location.host) {
@@ -524,7 +525,7 @@ var coolheadersSetup = function(e) {
tabId: e.tabId,
popup: 'torrent.html'
});
if (tab.url.startsWith('https')) {
if (tab != undefined && tab.url.startsWith('https')) {
browser.pageAction.setIcon({
path: 'icons/infotoopiesbt.png',
tabId: e.tabId
@@ -551,6 +552,13 @@ var coolheadersSetup = function(e) {
};
function getTabURL(tab) {
if (tab.tabId != undefined) {
popup = browser.pageAction.getPopup({ tabId: tab.tabId });
popup.then(gotPopup);
}
function gotPopup(p) {
if (p.length != 0) return;
if (tab.url.startsWith("https")) {
if (tab.url.includes(".i2p")) {
browser.pageAction.setPopup({
@@ -569,7 +577,7 @@ function getTabURL(tab) {
.then((response) => {
if (response != undefined && response != "") {
console.log(
"(pageaction) i2p-torrentlocation response object",
"(scrub)(equiv check) i2p-torrentlocation response object",
response
);
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
@@ -589,9 +597,9 @@ function getTabURL(tab) {
}
}
});
console.log("(pageaction)", tab.id, tab.url);
console.log("(scrub)(equiv check)", tab.id, tab.url);
} catch (e) {
console.log("(pageaction)", e);
console.log("(scrub)(equiv check)", e);
}
} else {
try {
@@ -600,7 +608,7 @@ function getTabURL(tab) {
.then((response) => {
if (response != undefined) {
console.log(
"(pageaction) i2p-location response object",
"(scrub)(equiv check) i2p-location response object",
response
);
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
@@ -620,9 +628,9 @@ function getTabURL(tab) {
}
}
});
console.log("(pageaction)", tab.id, tab.url);
console.log("(scrub)(equiv check)", tab.id, tab.url);
} catch (e) {
console.log("(pageaction)", e);
console.log("(scrub)(equiv check)", e);
}
}
} else {
@@ -668,6 +676,7 @@ function getTabURL(tab) {
console.log("(pageaction)", e);
}
}
}
}
function getClearTab(tobj) {

View File

@@ -1,12 +1,12 @@
function gotCurrent(tab) {
function gotTitle(title) {
let addr = title;
document.getElementById('TypeInfo').innerHTML =
'<div class="AddressInfo"><a href="' + addr + '">' + addr + '</a></div>';
document.getElementById("TypeInfo").innerHTML =
'<div class="AddressInfo"><a href="' + addr + '">' + addr + "</a></div>";
}
console.log(tab);
var gettingTitle = browser.pageAction.getTitle({
tabId: tab[0].id
tabId: tab[0].id,
});
gettingTitle.then(gotTitle);
}

View File

@@ -1,30 +1,30 @@
'use strict';
"use strict";
////// RPC
function rpcCall(meth, args) {
return browser.storage.local.get(function(server) {
return browser.storage.local.get(function (server) {
const myHeaders = {
'Content-Type': 'application/json',
'x-transmission-session-id': server.session
"Content-Type": "application/json",
"x-transmission-session-id": server.session,
};
//console.log("(torrent)", server.session)
if (server.username !== '' || server.btrpcpass !== '') {
myHeaders['Authorization'] =
'Basic ' +
btoa((server.username || '') + ':' + (server.btrpcpass || ''));
if (server.username !== "" || server.btrpcpass !== "") {
myHeaders["Authorization"] =
"Basic " +
btoa((server.username || "") + ":" + (server.btrpcpass || ""));
}
//console.log("(torrent) rpc", server.base_url);
return fetch(server.base_url + 'rpc', {
method: 'POST',
return fetch(server.base_url + "rpc", {
method: "POST",
headers: myHeaders,
body: JSON.stringify({ method: meth, arguments: args }),
credentials: 'include' // allows HTTPS client certs!
credentials: "include", // allows HTTPS client certs!
})
.then(function(response) {
const session = response.headers.get('x-transmission-session-id');
.then(function (response) {
const session = response.headers.get("x-transmission-session-id");
if (session) {
browser.storage.local.get({}).then(function(storage) {
browser.storage.local.get({}).then(function (storage) {
storage.session = session;
browser.storage.local.set(storage);
});
@@ -39,7 +39,7 @@ function rpcCall(meth, args) {
error.response = response;
throw error;
})
.then(function(response) {
.then(function (response) {
return response.json();
});
});
@@ -50,11 +50,11 @@ function rpcCall(meth, args) {
function formatSpeed(s) {
// Firefox shows 4 characters max
if (s < 1000 * 1000) {
return (s / 1000).toFixed() + 'K';
return (s / 1000).toFixed() + "K";
}
if (s < 1000 * 1000 * 1000) {
return (s / 1000 / 1000).toFixed() + 'M';
return (s / 1000 / 1000).toFixed() + "M";
}
// You probably don't have that download speed…
return (s / 1000 / 1000 / 1000).toFixed() + 'T';
return (s / 1000 / 1000 / 1000).toFixed() + "T";
}