Compare commits
219 Commits
0.67
...
android-co
Author | SHA1 | Date | |
---|---|---|---|
![]() |
aa6a9a0da8 | ||
![]() |
7bfc4f8c66 | ||
![]() |
ffc29deb8e | ||
![]() |
78a01f6cc1 | ||
![]() |
d09bb59a1f | ||
![]() |
e2f8a439b6 | ||
![]() |
95a282c07f | ||
![]() |
02f3cc871d | ||
![]() |
5d260c5a3e | ||
![]() |
b5758839e1 | ||
![]() |
a473da6a8e | ||
![]() |
75b4ff4b60 | ||
![]() |
d3cf9e8686 | ||
![]() |
7bd7701aeb | ||
![]() |
87c3a62f25 | ||
![]() |
4bc984a72d | ||
![]() |
7b6438dce5 | ||
![]() |
80d5367fed | ||
![]() |
a7902632bc | ||
![]() |
199e6577bb | ||
![]() |
00fd0aed62 | ||
![]() |
daaebe027d | ||
![]() |
3d39e75ffd | ||
![]() |
e013c093d8 | ||
![]() |
5b51fc2c27 | ||
![]() |
65e43abe02 | ||
![]() |
7f810f86d0 | ||
![]() |
899974c339 | ||
![]() |
6f30aeaf06 | ||
![]() |
d285063b4f | ||
![]() |
ffa282671b | ||
![]() |
e9acc1fe35 | ||
![]() |
04ebfedb84 | ||
![]() |
23d451cf92 | ||
![]() |
44628a1358 | ||
![]() |
04782aa099 | ||
![]() |
ff4302eb2b | ||
![]() |
9185a4daf2 | ||
![]() |
6b6a73dbdb | ||
![]() |
1729656189 | ||
![]() |
08b31efbfc | ||
![]() |
e124d61115 | ||
![]() |
e6e914cefe | ||
![]() |
4d2e68f79d | ||
![]() |
b5bb8ec694 | ||
![]() |
f0651edb06 | ||
![]() |
49ce0162d1 | ||
![]() |
153a49e18f | ||
![]() |
88cc54217c | ||
![]() |
83bb92c0cb | ||
![]() |
f337e64b81 | ||
![]() |
42f90273e2 | ||
![]() |
616d8429b7 | ||
![]() |
3261fd1505 | ||
![]() |
4ea8fd4826 | ||
![]() |
c899f7b1e7 | ||
![]() |
02bc927262 | ||
![]() |
5393d7f26f | ||
![]() |
fa66c26b09 | ||
![]() |
eec31ad3db | ||
![]() |
3a770cb518 | ||
![]() |
7de36bc86c | ||
![]() |
c0bf732253 | ||
![]() |
49948a524e | ||
![]() |
ac792dbcd5 | ||
![]() |
db8508e75b | ||
![]() |
95e0642126 | ||
![]() |
54b5be97e2 | ||
![]() |
8bebe2a920 | ||
![]() |
fedb2d3707 | ||
![]() |
b605ea515f | ||
![]() |
a38d18c049 | ||
![]() |
a0be345f86 | ||
![]() |
e08ce1c71e | ||
![]() |
f25a29052f | ||
![]() |
13c5042006 | ||
![]() |
01ce1a2f13 | ||
![]() |
8430e3b952 | ||
![]() |
ac09b72be3 | ||
![]() |
d901711c7b | ||
![]() |
88517a7b52 | ||
![]() |
39eb695522 | ||
![]() |
009bac364c | ||
![]() |
9741b21def | ||
![]() |
df7bc109ed | ||
![]() |
8cd9b53be3 | ||
![]() |
9db61be253 | ||
![]() |
78a1794568 | ||
![]() |
aa9805e107 | ||
![]() |
a992553ffb | ||
![]() |
3a30961cd1 | ||
![]() |
a6aba7b5f7 | ||
![]() |
26c4152bf6 | ||
![]() |
8230fe92a7 | ||
![]() |
6d0cda9e67 | ||
![]() |
12992c461b | ||
![]() |
531963c1c0 | ||
![]() |
8bfb7cdd27 | ||
![]() |
40899889a0 | ||
![]() |
bc88ca80fd | ||
![]() |
3b3744ffff | ||
![]() |
9cd6ce888e | ||
![]() |
7b2216a12f | ||
![]() |
1946669b82 | ||
![]() |
bb14021bc0 | ||
![]() |
51510abaed | ||
![]() |
f837eb18d5 | ||
![]() |
bf4b160dcd | ||
![]() |
7bd08ab6e0 | ||
![]() |
647c0523e8 | ||
![]() |
58b874d17f | ||
![]() |
969d2769fd | ||
![]() |
d88d6b2f61 | ||
![]() |
b420dc0a28 | ||
![]() |
0489a2774f | ||
![]() |
49f394acca | ||
![]() |
dd788b15ca | ||
![]() |
84981fa801 | ||
![]() |
d328dd1ca0 | ||
![]() |
590f2c7cd8 | ||
![]() |
e93ad94c89 | ||
![]() |
203decf121 | ||
![]() |
5ab871b51f | ||
![]() |
858d03fa2b | ||
![]() |
374ce51eff | ||
![]() |
cd3dafe9c8 | ||
![]() |
8c256241cb | ||
![]() |
18cc8eb962 | ||
![]() |
f1fd2f6fb6 | ||
![]() |
691dff77a0 | ||
![]() |
0910986d52 | ||
![]() |
8d4e38ccdf | ||
![]() |
e67c266ce0 | ||
![]() |
9c12df60d2 | ||
![]() |
5fb224fdfa | ||
![]() |
9a0daa480d | ||
![]() |
b041f7f8c7 | ||
![]() |
42cb2aae64 | ||
![]() |
449e3dbee6 | ||
![]() |
422bfa6c18 | ||
![]() |
f1909ec923 | ||
![]() |
a3bb8a6fe9 | ||
![]() |
3596a7e6fd | ||
![]() |
1d9b3b5001 | ||
![]() |
cf99bde088 | ||
![]() |
c3d73649a0 | ||
![]() |
a4336b105f | ||
![]() |
a56bf3101d | ||
![]() |
7822c7b9fe | ||
![]() |
15fffd25dc | ||
![]() |
1c7ec493cb | ||
![]() |
11fd9efd31 | ||
![]() |
08a1e73008 | ||
![]() |
e09546d6bb | ||
![]() |
fa0aedda92 | ||
![]() |
105aaed014 | ||
![]() |
fff55eadd6 | ||
![]() |
db43f2760a | ||
![]() |
ba0d4abc53 | ||
![]() |
65636c2b5e | ||
![]() |
4c2a7978f2 | ||
![]() |
7e97ab766a | ||
![]() |
16b1990bd9 | ||
![]() |
2c7b092376 | ||
![]() |
100f27b4be | ||
![]() |
357b1a93b4 | ||
![]() |
d8d075bd76 | ||
![]() |
9fefb82c57 | ||
![]() |
566f987483 | ||
![]() |
0a0d065b6a | ||
![]() |
69186671ed | ||
![]() |
ede59d7c3a | ||
![]() |
4012bdea45 | ||
![]() |
6d6dce88dd | ||
![]() |
0ba0aafa7c | ||
![]() |
87f9df4af7 | ||
![]() |
09de46cadf | ||
![]() |
a2be795853 | ||
![]() |
cf91b77e8d | ||
![]() |
a37387fa89 | ||
![]() |
658f162193 | ||
![]() |
1e71e8bdce | ||
![]() |
53b9732cae | ||
![]() |
c89bfa8f1e | ||
![]() |
cf7d137d00 | ||
![]() |
bc1ef95a16 | ||
![]() |
342ead307d | ||
![]() |
2bc6e9dfc2 | ||
![]() |
7219667fdb | ||
![]() |
abc1882004 | ||
![]() |
0d0656bcc0 | ||
![]() |
bbda71c8b5 | ||
![]() |
6eb6afab81 | ||
![]() |
a677552690 | ||
![]() |
7758822256 | ||
![]() |
4296fcb132 | ||
![]() |
a7746d867b | ||
![]() |
ea333b3cec | ||
![]() |
b9ac5a5072 | ||
![]() |
1401726f54 | ||
![]() |
11c03fb2aa | ||
![]() |
b4d1108e9c | ||
![]() |
a6b7f29bbd | ||
![]() |
1eb293d754 | ||
![]() |
f3a61d2619 | ||
![]() |
0b1aa5941b | ||
![]() |
ad5882501d | ||
![]() |
e014619881 | ||
![]() |
677c5c6a68 | ||
![]() |
a3217e2bcf | ||
![]() |
4ab7069015 | ||
![]() |
3a13270479 | ||
![]() |
a8eb2b90a2 | ||
![]() |
e54754a83a | ||
![]() |
7f3b6c7359 | ||
![]() |
50ff84111d | ||
![]() |
984643e1b2 | ||
![]() |
917fd00771 | ||
![]() |
97ee549d40 |
22
.eslintrc.js
@@ -2,15 +2,15 @@ module.exports = {
|
||||
env: {
|
||||
browser: true,
|
||||
es6: true,
|
||||
webextensions: true
|
||||
webextensions: true,
|
||||
},
|
||||
extends: "eslint:recommended",
|
||||
globals: {
|
||||
Atomics: "readonly",
|
||||
SharedArrayBuffer: "readonly"
|
||||
SharedArrayBuffer: "readonly",
|
||||
},
|
||||
parserOptions: {
|
||||
ecmaVersion: 2018
|
||||
ecmaVersion: 2018,
|
||||
},
|
||||
rules: {
|
||||
"accessor-pairs": "error",
|
||||
@@ -24,8 +24,8 @@ module.exports = {
|
||||
"error",
|
||||
{
|
||||
after: true,
|
||||
before: true
|
||||
}
|
||||
before: true,
|
||||
},
|
||||
],
|
||||
"block-scoped-var": "off",
|
||||
"block-spacing": "error",
|
||||
@@ -39,8 +39,8 @@ module.exports = {
|
||||
"error",
|
||||
{
|
||||
after: true,
|
||||
before: false
|
||||
}
|
||||
before: false,
|
||||
},
|
||||
],
|
||||
"comma-style": ["error", "last"],
|
||||
complexity: "error",
|
||||
@@ -77,8 +77,8 @@ module.exports = {
|
||||
"error",
|
||||
{
|
||||
after: true,
|
||||
before: true
|
||||
}
|
||||
before: true,
|
||||
},
|
||||
],
|
||||
"line-comment-position": "error",
|
||||
"linebreak-style": ["error", "unix"],
|
||||
@@ -247,6 +247,6 @@ module.exports = {
|
||||
"wrap-iife": "error",
|
||||
"wrap-regex": "error",
|
||||
"yield-star-spacing": "error",
|
||||
yoda: ["error", "never"]
|
||||
}
|
||||
yoda: ["error", "never"],
|
||||
},
|
||||
};
|
||||
|
94
Makefile
@@ -32,16 +32,16 @@ ls:
|
||||
ls -lah $(PREFIX)/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
|
||||
|
||||
clean: rc clean-artifacts
|
||||
rm -fr ../i2psetproxy.js.zip ../i2p_proxy*.xpi ../i2p*.xpi *.torrent #../i2psetproxy.js_*.*
|
||||
rm -fr ../i2psetproxy.js.zip ../i2p_proxy*.xpi *.torrent #../i2psetproxy.js_*.*
|
||||
|
||||
## EVEN RELEASES are AMO RELEASES
|
||||
## ODD RELEASES are SELFHOSTED RELEASES
|
||||
|
||||
MOZ_VERSION=0.68
|
||||
VERSION=0.67
|
||||
MOZ_VERSION=0.114
|
||||
VERSION=0.113
|
||||
|
||||
## INCREMENT THIS EVERY TIME YOU DO A RELEASE
|
||||
LAST_VERSION=0.63
|
||||
LAST_VERSION=0.111.1
|
||||
|
||||
YELLOW=F7E59A
|
||||
ORANGE=FFC56D
|
||||
@@ -64,7 +64,7 @@ amo-readme:
|
||||
sed 's|</h3>|</strong>|g' | \
|
||||
grep -v '<img' > amo-index.html
|
||||
|
||||
MAGNET=`torrent2magnet i2ppb@eyedeekay.github.io.xpi.torrent`
|
||||
MAGNET=`rhash --magnet i2ppb@eyedeekay.github.io.xpi.torrent`
|
||||
|
||||
index:
|
||||
@echo "<!DOCTYPE html>" > index.html
|
||||
@@ -97,16 +97,20 @@ xpi: getxpi
|
||||
version:
|
||||
sed -i 's|7647|7657|g' *.js* torrent/*.js*
|
||||
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(VERSION)\",|g' manifest.json
|
||||
sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(VERSION)\",|g' manifest.json
|
||||
# sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(VERSION)\",|g' manifest.json
|
||||
find . -name 'messages.json' -exec sed -i 's|$(LAST_VERSION)|$(VERSION)|g' {} \;
|
||||
find . -name 'messages.json' -exec sed -i 's|$(MOZ_VERSION)|$(VERSION)|g' {} \;
|
||||
|
||||
moz-version:
|
||||
sed -i 's|7647|7657|g' *.js* torrent/*.js*
|
||||
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(MOZ_VERSION)\",|g' manifest.json
|
||||
sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(MOZ_VERSION)\",|g' manifest.json
|
||||
# sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(MOZ_VERSION)\",|g' manifest.json
|
||||
find . -name 'messages.json' -exec sed -i 's|$(LAST_VERSION)|$(MOZ_VERSION)|g' {} \;
|
||||
find . -name 'messages.json' -exec sed -i 's|$(VERSION)|$(MOZ_VERSION)|g' {} \;
|
||||
|
||||
rhz-version:
|
||||
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(VERSION)1\",|g' manifest.json
|
||||
sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(VERSION)1-rhizome\",|g' manifest.json
|
||||
# sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(VERSION)1-rhizome\",|g' manifest.json
|
||||
sed -i 's|7657|7647|g' *.js* torrent/*.js*
|
||||
|
||||
zip: version
|
||||
@@ -143,7 +147,7 @@ recreate-release: delete-release release upload
|
||||
|
||||
upload: upload-xpi upload-deb
|
||||
|
||||
full-release: release submit upload-xpi torrent upload-torrent deb upload-deb upload-rss
|
||||
full-release: release submit upload-xpi torrent upload-torrent deb upload-deb upload-rss seed
|
||||
|
||||
WEB_EXT_API_KEY=AMO_KEY
|
||||
WEB_EXT_API_SECRET=AMO_SECRET
|
||||
@@ -154,7 +158,7 @@ WEB_EXT_API_SECRET=AMO_SECRET
|
||||
tk:
|
||||
echo $(WEB_EXT_API_KEY)
|
||||
|
||||
submit: moz-sign rhz-submit moz-submit
|
||||
submit: moz-submit moz-sign
|
||||
|
||||
clean-artifacts:
|
||||
rm -fr web-ext-artifacts/*
|
||||
@@ -164,7 +168,7 @@ moz-sign: version clean-artifacts
|
||||
@echo "Using the 'sign' target to instantly sign an extension for self-distribution"
|
||||
@echo "requires a JWT API Key and Secret from addons.mozilla.org to be made available"
|
||||
@echo "to the Makefile under the variables WEB_EXT_API_KEY and WEB_EXT_API_SECRET."
|
||||
web-ext-submit --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET)
|
||||
$(HOME)/web-ext/bin/web-ext sign --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET) --timeout 900000 #--api-url-prefix http://localhost:3000/api/v4
|
||||
make copyss
|
||||
sleep 5
|
||||
|
||||
@@ -178,7 +182,7 @@ moz-submit: moz-version
|
||||
@echo "to the Makefile under the variables WEB_EXT_API_KEY and WEB_EXT_API_SECRET."
|
||||
mv manifest.json .manifest.json
|
||||
grep -v update_url .manifest.json > manifest.json
|
||||
web-ext sign --channel listed --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET); true
|
||||
$(HOME)/web-ext/bin/web-ext sign --channel listed --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET) --timeout 900000 --verbose #--api-url-prefix http://localhost:3000/api/v4
|
||||
sleep 5
|
||||
mv .manifest.json manifest.json
|
||||
|
||||
@@ -187,7 +191,7 @@ rhz-submit: rhz-version
|
||||
#@echo "Using the 'sign' target to instantly sign an extension for self-distribution"
|
||||
#@echo "requires a JWT API Key and Secret from addons.mozilla.org to be made available"
|
||||
#@echo "to the Makefile under the variables WEB_EXT_API_KEY and WEB_EXT_API_SECRET."
|
||||
#web-ext-submit --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET); true
|
||||
#$HOME/node_modules/web-ext-submit/extender.sh --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET); true
|
||||
#cp web-ext-artifacts/*.xpi ./i2ppb@eyedeekay.github.io.xpi
|
||||
|
||||
getxpi:
|
||||
@@ -197,10 +201,10 @@ getxpi:
|
||||
|
||||
torrent: getxpi
|
||||
rm -f "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent"
|
||||
mktorrent -a http://zviyq72xcmjupynn5y2f5qa3u7bxyu34jnqmwt6czte2l7idxm7q.b32.i2p/announce \
|
||||
mktorrent -a http://w7tpbzncbcocrqtwwm3nezhnnsw4ozadvi2hmvzdhrqzfxfum7wa.b32.i2p/a \
|
||||
-a http://zviyq72xcmjupynn5y2f5qa3u7bxyu34jnqmwt6czte2l7idxm7q.b32.i2p/announce \
|
||||
-a http://s5ikrdyjwbcgxmqetxb3nyheizftms7euacuub2hic7defkh3xhq.b32.i2p/a \
|
||||
-a http://uajd4nctepxpac4c4bdyrdw7qvja2a5u3x25otfhkptcjgd53ioq.b32.i2p/announce \
|
||||
-a http://w7tpbzncbcocrqtwwm3nezhnnsw4ozadvi2hmvzdhrqzfxfum7wa.b32.i2p/a \
|
||||
-a http://explodie.org:6969/announce \
|
||||
-a http://tracker.opentrackr.org:1337/announce \
|
||||
-a http://tracker.kamigami.org:2710/announce \
|
||||
@@ -275,11 +279,18 @@ fmt-html:
|
||||
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes options/options.html > options/.options.html; mv options/.options.html options/options.html
|
||||
|
||||
fmt-js:
|
||||
find . -path ./node_modules -prune -o -name '*.js' -exec prettier --write {} \;
|
||||
find . -path ./node_modules -prune -o -name '*.json' -exec prettier --write {} \;
|
||||
fixjsstyle *.js
|
||||
fixjsstyle options/*.js
|
||||
fixjsstyle torrent/*.js
|
||||
fixjsstyle i2pcontrol/*.js
|
||||
fixjsstyle manifest.json
|
||||
#find . -path ./node_modules -prune -o -name '*.json' -exec fixjsstyle --write {} \;
|
||||
|
||||
fmt-prettier:
|
||||
find . -name '*.js*' -exec $(HOME)/node_modules/.bin/prettier -w {} \;
|
||||
|
||||
lint:
|
||||
fixjsstyle *.js
|
||||
|
||||
gjslint *.js; true
|
||||
#eslint --color *.js
|
||||
|
||||
@@ -317,10 +328,53 @@ upload-updatemanifest:
|
||||
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "updateManifest.json" -f updateManifest.json
|
||||
|
||||
webext:
|
||||
web-ext run -u "about:devtools-toolbox?type=extension&id=i2ppb%40eyedeekay.github.io"
|
||||
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u "about:devtools-toolbox?type=extension&id=i2ppb%40eyedeekay.github.io"
|
||||
|
||||
snark-mirror:
|
||||
http_proxy=http://127.0.0.1:4444 wget -c -O ../i2psnark-rpc.su3 http://stats.i2p/i2p/plugins/i2psnark-rpc.su3
|
||||
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psnark-rpc.su3" -f ../i2psnark-rpc.su3
|
||||
http_proxy=http://127.0.0.1:4444 wget -c -O ../i2psnark-rpc-update.su3 http://stats.i2p/i2p/plugins/i2psnark-rpc-update.su3
|
||||
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psnark-rpc-update.su3" -f ../i2psnark-rpc-update.su3
|
||||
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psnark-rpc-update.su3" -f ../i2psnark-rpc-update.su3
|
||||
|
||||
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:
|
||||
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -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 http://tvndxxkxcstbtqfxg7iigco6bj22ff2y6jxikmk7wqkyadkhrd4a.b32.i2p \
|
||||
-u https://ramble.pw \
|
||||
-u https://ramble.pw/f/i2p \
|
||||
|
||||
lht-test:
|
||||
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -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
|
||||
|
||||
android:
|
||||
$(HOME)/web-ext/bin/web-ext run --target firefox-android \
|
||||
--android-device NE1GAM7780819544 \
|
||||
--browser-console
|
||||
|
||||
run:
|
||||
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u about:debugging
|
||||
|
||||
chromium:
|
||||
$(HOME)/web-ext/bin/web-ext run --target chromium
|
||||
|
56
README.md
@@ -10,6 +10,20 @@ user requests them. It also adds convenience and management features, like an
|
||||
embedded I2P console and Bittorrent integration with clients using the
|
||||
transmission-rpc API.
|
||||
|
||||
Privacy Policy
|
||||
--------------
|
||||
|
||||
This browser extension does not collect any personal information. It requires
|
||||
access to local storage and browsing data permissions in order to delete them
|
||||
when directed to by the user. This browser extension does not transmit any
|
||||
information to any third party, nor will it, ever.
|
||||
|
||||
This browser extension cannot influence telemetry carried out by browser vendors
|
||||
to determine performance in their distribution channels, nor can it mitigate any
|
||||
other browser vendor telemetry.
|
||||
|
||||
This browser extension is entirely Free, Open-Source software.
|
||||
|
||||
Installation(Cross-Platform):
|
||||
-----------------------------
|
||||
|
||||
@@ -97,13 +111,20 @@ Usage:
|
||||
console URL's and placing applications under their own origin.
|
||||
* 
|
||||
* [Done] **Handle Torrents** by talking to i2psnark-rpc plugin and then
|
||||
adding them directly into the Firefox downloads drop-downs, menus, etc. If I
|
||||
can.
|
||||
adding them directly into the Firefox downloads drop-downs, menus, etc. Enable
|
||||
the use of I2PSnark as a peer-to-peer delivery mechanism for media files.
|
||||
* 
|
||||
* 
|
||||
* [Started] Indicate the level of authenticity provided by TLS. TLS is
|
||||
* [Done] **Enhance** the I2P browsing experience by allowing site developers
|
||||
distribute some or all of their resources as torrents, allowing the torrents to
|
||||
be treated effectively as a CDN.
|
||||
* 
|
||||
* [Done] **Indicate** the level of authenticity provided by TLS. TLS is
|
||||
optional on I2P for now, but some sites offer it anyway. TLS support is
|
||||
experimental and in the works.
|
||||
* 
|
||||
* [Done] **Provide** alternate, in-I2P destinations for web sites that want to
|
||||
mirror their content within I2P.
|
||||
* [barely started] **Isolate** traffic by contextual identity to it's own HTTP
|
||||
Proxy tunnel, each reflecting it's own pseudonymous identity within I2P. The
|
||||
contextual identities. For now, the contextual identities used to manage
|
||||
@@ -173,11 +194,14 @@ Project uplift seems to have largely been accomplished?
|
||||
* [Tor at the Heart: Firefox](https://blog.torproject.org/tor-heart-firefox) is
|
||||
a blog about Tor and the relationship they have to Firefox re: TBB, Fusion.
|
||||
|
||||
The Old Version
|
||||
---------------
|
||||
The **Other** Version
|
||||
---------------------
|
||||
|
||||
New versions of this extension create an I2P in Private Browsing mode instead.
|
||||
Since this is a drastic change to the behavior of the old plugin, a new entry
|
||||
New versions of this extension create an I2P in Private Browsing mode instead,
|
||||
using container tabs.
|
||||
|
||||
Since this is a drastic change to the behavior of the old plugin, and since there
|
||||
is no UI a new entry
|
||||
for the new plugin has been made at a new location on addons.mozilla.org.
|
||||
|
||||
* This is the new version: [[link]](https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/)
|
||||
@@ -187,20 +211,6 @@ for the new plugin has been made at a new location on addons.mozilla.org.
|
||||
Android usage:
|
||||
--------------
|
||||
|
||||
Open the following link
|
||||
[Github Releases Version](https://github.com/eyedeekay/i2psetproxy.js/releases/)
|
||||
in the browser you want to use for I2P. Firefox will warn you that it is about
|
||||
to install an extension and indicate the permissions required. Read them over
|
||||
and when you're ready, accept them. That's all it should take, your browser is
|
||||
now configured to use I2P.
|
||||
Use the old version, on either an old version of Firefox(pre-68) or by enabling
|
||||
this custom collection: [Recommended Plugins] https://addons.mozilla.org/en-US/firefox/collections/14614396/I2P-Browser-Fork/
|
||||
|
||||
### Android addons.mozilla.org(Temporarily Disabled)
|
||||
|
||||
If you would prefer to recieve automatic updates from AMO, the correct product
|
||||
page for this plugin is
|
||||
[I2P In Private Browsing](https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/).
|
||||
This absolutely requires a working outproxy. If you want to avoid the use of AMO
|
||||
for updates, you can download the identical plugin from this repository's
|
||||
releases page. The latest AMO Plugin will always be identical to the latest
|
||||
github release, except for the version number, which must be incremented for
|
||||
submission to AMO.
|
||||
|
@@ -3,6 +3,10 @@
|
||||
"message": "I2P In Private Browsing",
|
||||
"description": "Name of the extension."
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"message": "I2P In Private Browsing - Rhizome Variant",
|
||||
"description": "Name of the extension."
|
||||
},
|
||||
"toopieName": {
|
||||
"message": "toopie.html",
|
||||
"description": "Name of the sidebar."
|
||||
@@ -16,13 +20,9 @@
|
||||
"description": "Description of the extension."
|
||||
},
|
||||
"extensionVersion": {
|
||||
"message": "0.63",
|
||||
"message": "0.108",
|
||||
"description": "Version of the extension."
|
||||
},
|
||||
"extensionStatus": {
|
||||
"message": "It is a labs project for enhancing your I2P browsing experience.",
|
||||
"description": "Release status of the extension."
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"message": "Proxy is not ready",
|
||||
"description": "Proxy failed status."
|
||||
@@ -163,12 +163,28 @@
|
||||
"message": "Web Browser (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"localPreface": {
|
||||
"message": "Localhost Browser",
|
||||
"ircPreface": {
|
||||
"message": "Dispatch IRC",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"localPrefacePrivate": {
|
||||
"message": "Localhost Browser (Private)",
|
||||
"ircPrefacePrivate": {
|
||||
"message": "Dispatch IRC (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"blogPreface": {
|
||||
"message": "Blog",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"message": "Blog (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": {
|
||||
@@ -203,6 +219,14 @@
|
||||
"message": "Hidden Services Manager (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"message": "MuWire",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"message": "MuWire (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"resetMessage": {
|
||||
"message": "Reset Tunnel",
|
||||
"description": "Message for the Reset Tunnel button"
|
||||
|
314
_locales/es/messages.json
Normal file
@@ -0,0 +1,314 @@
|
||||
{
|
||||
"extensionName": {
|
||||
"message": "I2P en navegación privada",
|
||||
"description": "Nombre de la extensión."
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"message": "I2P en navegación privada - Rhizome",
|
||||
"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.108",
|
||||
"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"
|
||||
},
|
||||
"blogPreface": {
|
||||
"message": "Blog",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"message": "Blog (Private)",
|
||||
"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"
|
||||
}
|
||||
}
|
BIN
alternate-address.png
Normal file
After Width: | Height: | Size: 309 KiB |
468
background.js
@@ -1,18 +1,33 @@
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
var titleprefpriv = chrome.i18n.getMessage("titlePrefacePrivate");
|
||||
var webpref = chrome.i18n.getMessage("webPreface");
|
||||
var webprefpriv = chrome.i18n.getMessage("webPrefacePrivate");
|
||||
var routerpref = chrome.i18n.getMessage("routerPreface");
|
||||
var routerprefpriv = chrome.i18n.getMessage("routerPrefacePrivate");
|
||||
var mailpref = chrome.i18n.getMessage("mailPreface");
|
||||
var mailprefpriv = chrome.i18n.getMessage("mailPrefacePrivate");
|
||||
var torrentpref = chrome.i18n.getMessage("torrentPreface");
|
||||
var torrentprefpriv = chrome.i18n.getMessage("torrentPrefacePrivate");
|
||||
var tunnelpref = chrome.i18n.getMessage("i2ptunnelPreface");
|
||||
var tunnelprefpriv = chrome.i18n.getMessage("i2ptunnelPrefacePrivate");
|
||||
var localpref = chrome.i18n.getMessage("localPreface");
|
||||
var localprefpriv = chrome.i18n.getMessage("localPrefacePrivate");
|
||||
var extensionpref = chrome.i18n.getMessage("extensionPreface");
|
||||
var titlepref = chrome.i18n.getMessage('titlePreface');
|
||||
var titleprefpriv = chrome.i18n.getMessage('titlePrefacePrivate');
|
||||
var webpref = chrome.i18n.getMessage('webPreface');
|
||||
var webprefpriv = chrome.i18n.getMessage('webPrefacePrivate');
|
||||
var routerpref = chrome.i18n.getMessage('routerPreface');
|
||||
var routerprefpriv = chrome.i18n.getMessage('routerPrefacePrivate');
|
||||
var mailpref = chrome.i18n.getMessage('mailPreface');
|
||||
var mailprefpriv = chrome.i18n.getMessage('mailPrefacePrivate');
|
||||
var torrentpref = chrome.i18n.getMessage('torrentPreface');
|
||||
var torrentprefpriv = chrome.i18n.getMessage('torrentPrefacePrivate');
|
||||
var tunnelpref = chrome.i18n.getMessage('i2ptunnelPreface');
|
||||
var tunnelprefpriv = chrome.i18n.getMessage('i2ptunnelPrefacePrivate');
|
||||
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');
|
||||
var blogpref = chrome.i18n.getMessage('blogPreface');
|
||||
var blogprefpriv = chrome.i18n.getMessage('blogPrefacePrivate');
|
||||
|
||||
function onError(err) {
|
||||
console.log('(background)', err);
|
||||
}
|
||||
|
||||
function onContextGotLog(contexts) {
|
||||
if (contexts != null) {
|
||||
console.log(contexts);
|
||||
}
|
||||
}
|
||||
|
||||
function onContextsGot(contexts) {
|
||||
var ids = [];
|
||||
@@ -20,13 +35,22 @@ function onContextsGot(contexts) {
|
||||
console.log(`Name : ${context.name}`);
|
||||
ids.push(context.name);
|
||||
}
|
||||
console.log("Checking new contexts");
|
||||
console.log('Checking new contexts');
|
||||
if (ids.indexOf(titlepref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: titlepref,
|
||||
color: "orange",
|
||||
icon: "fingerprint"
|
||||
color: 'orange',
|
||||
icon: 'fingerprint'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(blogpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: blogpref,
|
||||
color: 'pink',
|
||||
icon: 'pet'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -34,8 +58,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: webpref,
|
||||
color: "red",
|
||||
icon: "circle"
|
||||
color: 'red',
|
||||
icon: 'circle'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -43,8 +67,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: routerpref,
|
||||
color: "blue",
|
||||
icon: "briefcase"
|
||||
color: 'blue',
|
||||
icon: 'briefcase'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -52,8 +76,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: tunnelpref,
|
||||
color: "green",
|
||||
icon: "tree"
|
||||
color: 'green',
|
||||
icon: 'tree'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -61,8 +85,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: mailpref,
|
||||
color: "yellow",
|
||||
icon: "briefcase"
|
||||
color: 'yellow',
|
||||
icon: 'briefcase'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -70,39 +94,57 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: torrentpref,
|
||||
color: "purple",
|
||||
icon: "chill"
|
||||
color: 'purple',
|
||||
icon: 'chill'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(localpref) == -1) {
|
||||
if (ids.indexOf(ircpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: localpref,
|
||||
color: "red",
|
||||
icon: "fence"
|
||||
name: ircpref,
|
||||
color: 'red',
|
||||
icon: 'vacation'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(muwirepref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: muwirepref,
|
||||
color: 'turquoise',
|
||||
icon: 'gift'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(botepref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: botepref,
|
||||
color: 'blue',
|
||||
icon: 'fence'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
}
|
||||
|
||||
function onContextsError() {
|
||||
console.log("Error finding contextual identities, is the API enabled?");
|
||||
console.log('Error finding contextual identities, is the API enabled?');
|
||||
}
|
||||
|
||||
function onCreated(context) {
|
||||
console.log(" ID:", context.cookieStoreId, "created.");
|
||||
console.log(' ID:', context.cookieStoreId, 'created.');
|
||||
}
|
||||
|
||||
function onNotCreated(context) {
|
||||
console.log("ID:", context.cookieStoreId, "not created.");
|
||||
console.log('ID:', context.cookieStoreId, 'not created.');
|
||||
}
|
||||
|
||||
browser.contextualIdentities.query({}).then(onContextsGot, onContextsError);
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os != "android") {
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os != 'android') {
|
||||
browser.windows.onCreated.addListener(themeWindow);
|
||||
browser.windows.onFocusChanged.addListener(themeWindow);
|
||||
browser.windows.onRemoved.addListener(themeWindow);
|
||||
@@ -114,8 +156,8 @@ gettingInfo.then(got => {
|
||||
function themeWindowByTab(tabId) {
|
||||
function tabWindow(tab) {
|
||||
var gettingPlatformInfo = browser.runtime.getPlatformInfo();
|
||||
gettingPlatformInfo.then(got => {
|
||||
if (got.os == "android") {
|
||||
gettingPlatformInfo.then((got) => {
|
||||
if (got.os == 'android') {
|
||||
let getwindow = browser.tabs.get(tab.tabId);
|
||||
getwindow.then(themeWindow);
|
||||
} else {
|
||||
@@ -124,7 +166,7 @@ function themeWindowByTab(tabId) {
|
||||
}
|
||||
});
|
||||
}
|
||||
if (typeof tabId === "number") {
|
||||
if (typeof tabId === 'number') {
|
||||
let tab = browser.tabs.get(tabId);
|
||||
tab.then(tabWindow);
|
||||
} else {
|
||||
@@ -144,138 +186,91 @@ function isEmpty(obj) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var oldtheme = null;
|
||||
|
||||
var getOldTheme = async function getOldTheme() {
|
||||
let foundtheme = await browser.theme.getCurrent();
|
||||
if (!isEmpty(foundtheme)) {
|
||||
oldtheme = foundtheme;
|
||||
console.log("Found old theme", oldtheme);
|
||||
let btheme = {
|
||||
colors: {
|
||||
frame: '#363A68',
|
||||
toolbar: '#363A68'
|
||||
}
|
||||
return oldtheme;
|
||||
};
|
||||
|
||||
getOldTheme();
|
||||
let dtheme = {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7'
|
||||
}
|
||||
};
|
||||
|
||||
function themeWindow(window) {
|
||||
// Check if the window is in private browsing
|
||||
function onThemeError() {
|
||||
console.log("got theme", oldtheme);
|
||||
browser.theme.update(oldtheme);
|
||||
console.log('(theme) color set error');
|
||||
browser.theme.reset();
|
||||
}
|
||||
|
||||
function dynamicTheme() {
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, dtheme);
|
||||
} else {
|
||||
browser.theme.update(window.id, dtheme);
|
||||
}
|
||||
}
|
||||
|
||||
function browserTheme() {
|
||||
console.log('(theme)Active in I2P window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, btheme);
|
||||
} else {
|
||||
browser.theme.update(window.id, btheme);
|
||||
}
|
||||
}
|
||||
|
||||
function unsetTheme() {
|
||||
browser.theme.reset();
|
||||
}
|
||||
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: "#FFC56D",
|
||||
toolbar: "#FFC56D"
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#FFC56D",
|
||||
toolbar: "#FFC56D"
|
||||
}
|
||||
});
|
||||
}
|
||||
browser.pageAction.setPopup({
|
||||
tabId: tabInfo[0].id,
|
||||
popup: "security.html"
|
||||
});
|
||||
//console.log("(background) tabinfo", tabInfo[0].id)
|
||||
browserTheme();
|
||||
browser.pageAction.show(tabInfo[0].id);
|
||||
} else if (context.name == routerpref) {
|
||||
console.log("Active in Router Console window");
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#A4C8E1",
|
||||
toolbar: "#A4C8E1"
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#A4C8E1",
|
||||
toolbar: "#A4C8E1"
|
||||
}
|
||||
});
|
||||
}
|
||||
console.log('(theme) Active in Router Console window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == tunnelpref) {
|
||||
console.log("Active in Hidden Services Manager window");
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#D9D9D6",
|
||||
toolbar: "#D9D9D6"
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#D9D9D6",
|
||||
toolbar: "#D9D9D6"
|
||||
}
|
||||
});
|
||||
}
|
||||
console.log('(theme) Active in Hidden Services Manager window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == mailpref) {
|
||||
console.log("Active in Web Mail window");
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#F7E59A",
|
||||
toolbar: "#F7E59A"
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#F7E59A",
|
||||
toolbar: "#F7E59A"
|
||||
}
|
||||
});
|
||||
}
|
||||
console.log('(theme) Active in Web Mail window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == torrentpref) {
|
||||
console.log("Active in Bittorrent window");
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#A48FE1",
|
||||
toolbar: "#A48FE1"
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#A48FE1",
|
||||
toolbar: "#A48FE1"
|
||||
}
|
||||
});
|
||||
}
|
||||
console.log('(theme) Active in Bittorrent window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == botepref) {
|
||||
console.log('(theme) Active in Bote window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == ircpref) {
|
||||
console.log('(theme) Active in IRC window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == blogpref) {
|
||||
console.log('(theme) (theme) Active in Blog window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == muwirepref) {
|
||||
console.log('(theme) Active in MuWire window');
|
||||
dynamicTheme();
|
||||
} else {
|
||||
console.log("Not active in I2P window");
|
||||
if (isEmpty(oldtheme)) {
|
||||
browser.theme.reset();
|
||||
} else {
|
||||
browser.theme.update(window.id, oldtheme);
|
||||
}
|
||||
console.log('(theme) Not active in MuWire window');
|
||||
browser.theme.reset();
|
||||
}
|
||||
}
|
||||
if (
|
||||
tabInfo[0].cookieStoreId != "firefox-default" &&
|
||||
tabInfo[0].cookieStoreId != "firefox-private"
|
||||
tabInfo[0].cookieStoreId != 'firefox-default' &&
|
||||
tabInfo[0].cookieStoreId != 'firefox-private'
|
||||
) {
|
||||
browser.contextualIdentities
|
||||
.get(tabInfo[0].cookieStoreId)
|
||||
.then(onContextGotTheme, onThemeError);
|
||||
} else if (isEmpty(oldtheme)) {
|
||||
browser.theme.reset();
|
||||
} else {
|
||||
browser.theme.update(window.id, oldtheme);
|
||||
console.log('(theme) Not active in I2P window');
|
||||
browser.theme.reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -289,109 +284,65 @@ function themeWindow(window) {
|
||||
function setTitle(window) {
|
||||
// Check if the window is in private browsing
|
||||
function onContextError() {
|
||||
console.log("Context Error");
|
||||
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 + " - "
|
||||
});
|
||||
}
|
||||
console.log('Active in I2P window');
|
||||
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 + ": "
|
||||
});
|
||||
}
|
||||
console.log('Active in Router Console window');
|
||||
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 + ": "
|
||||
});
|
||||
}
|
||||
console.log('Active in Hidden Services Manager window');
|
||||
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 + ": "
|
||||
});
|
||||
}
|
||||
console.log('Active in I2P Web Mail window');
|
||||
setTitle(mailpref, mailprefpriv);
|
||||
} else if (context.name == blogpref) {
|
||||
console.log('Active in I2P Blog window');
|
||||
setTitle(blogpref, blogprefpriv);
|
||||
} 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 + ": "
|
||||
});
|
||||
}
|
||||
} else if (context.name == localpref) {
|
||||
console.log("Active in Localhost window");
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: localprefpriv + " - " + localprefpriv + ": "
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: localpref + " - " + localpref + ": "
|
||||
});
|
||||
}
|
||||
console.log('Active in I2P Torrent window');
|
||||
setTitle(torrentpref, torrentprefpriv);
|
||||
} else if (context.name == ircpref) {
|
||||
console.log('Active in IRC window');
|
||||
setTitle(ircpref, ircprefpriv);
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
tabInfo[0].cookieStoreId != "firefox-default" &&
|
||||
tabInfo[0].cookieStoreId != "firefox-private"
|
||||
tabInfo[0].cookieStoreId != 'firefox-default' &&
|
||||
tabInfo[0].cookieStoreId != 'firefox-private'
|
||||
) {
|
||||
browser.contextualIdentities
|
||||
.get(tabInfo[0].cookieStoreId)
|
||||
.then(onContextGotTitle, onContextError);
|
||||
} else if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: ""
|
||||
titlePreface: ''
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: ""
|
||||
titlePreface: ''
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -404,11 +355,11 @@ function setTitle(window) {
|
||||
}
|
||||
|
||||
var gettingListenerInfo = browser.runtime.getPlatformInfo();
|
||||
gettingListenerInfo.then(got => {
|
||||
gettingListenerInfo.then((got) => {
|
||||
function onPlatformError() {
|
||||
console.log("Error finding platform info");
|
||||
console.log('Error finding platform info');
|
||||
}
|
||||
if (got.os != "android") {
|
||||
if (got.os != 'android') {
|
||||
browser.tabs.onCreated.addListener(() => {
|
||||
var getting = browser.windows.getCurrent({
|
||||
populate: true
|
||||
@@ -424,16 +375,6 @@ gettingListenerInfo.then(got => {
|
||||
}
|
||||
});
|
||||
|
||||
function handleUpdated(updateInfo) {
|
||||
if (updateInfo.theme) {
|
||||
console.log(`Theme was applied: ${updateInfo.theme}`);
|
||||
} else {
|
||||
console.log("Theme was removed");
|
||||
}
|
||||
}
|
||||
|
||||
browser.theme.onUpdated.addListener(handleUpdated);
|
||||
|
||||
function handleClick() {
|
||||
console.log("Opening page action");
|
||||
browser.pageAction.openPopup();
|
||||
@@ -483,3 +424,46 @@ browser.webRequest.onHeadersReceived.addListener(
|
||||
{ urls: ["<all_urls>"] },
|
||||
["blocking", "responseHeaders"]
|
||||
);
|
||||
|
||||
function onClosedWindowCheck() {
|
||||
var getContext = browser.contextualIdentities.query({ name: titlepref });
|
||||
function checkTabs(ctx) {
|
||||
for (let context in ctx) {
|
||||
function conditionallyDelete(tabs) {
|
||||
if (tabs.length == 0) {
|
||||
browser.contextualIdentities.remove(context.cookieStoreId);
|
||||
}
|
||||
}
|
||||
var tabs = browser.tabs.query({ cookieStoreId: context.cookieStoreId });
|
||||
tabs.then(conditionallyDelete, onError);
|
||||
}
|
||||
}
|
||||
getContext.then(checkTabs, onError);
|
||||
}
|
||||
|
||||
function onOpenedWindowCheck() {
|
||||
var getContext = browser.contextualIdentities.query({ name: titlepref });
|
||||
function checkTabs(ctx) {
|
||||
for (let context in ctx) {
|
||||
function conditionallyDelete(tabs) {
|
||||
if (tabs.length == 0 && context != 0) {
|
||||
console.log(context)
|
||||
browser.contextualIdentities.remove(context.cookieStoreId);
|
||||
}
|
||||
}
|
||||
var tabs = browser.tabs.query({ cookieStoreId: context.cookieStoreId });
|
||||
tabs.then(conditionallyDelete, onError);
|
||||
}
|
||||
}
|
||||
getContext.then(checkTabs, onError);
|
||||
}
|
||||
|
||||
onOpenedWindowCheck();
|
||||
|
||||
browser.tabs.onRemoved.addListener(onClosedWindowCheck);
|
||||
|
||||
if (browser.windows != undefined){
|
||||
console.log("windows unavailable on android", browser.runtime.PlatformOs)
|
||||
browser.windows.onRemoved.addListener(onClosedWindowCheck);
|
||||
browser.windows.onCreated.addListener(onOpenedWindowCheck);
|
||||
}
|
||||
|
405
bookmarks.js
@@ -1,198 +1,247 @@
|
||||
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: "Home Page",
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
} else {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: browser.runtime.getURL("home.html"),
|
||||
title: "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 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"
|
||||
});
|
||||
|
||||
bt.then(bookmarks);
|
||||
|
||||
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) {
|
||||
if (browser.windows != undefined) {
|
||||
let gettingStorage = browser.storage.local.get('bookmarks_state');
|
||||
gettingStorage.then(conditionalBookmarksSetup, bookmarksSetup);
|
||||
}
|
||||
}
|
||||
|
||||
const bookmarksButton = document.getElementById('bookmarksButton');
|
||||
if (bookmarksButton != null) {
|
||||
bookmarksButton.addEventListener('click', bookmarksSetup);
|
||||
}
|
||||
|
30
cert.js
@@ -1,42 +1,42 @@
|
||||
function blankContent(id) {
|
||||
let infoTitle = document.getElementById(id);
|
||||
if (infoTitle === null) {
|
||||
console.log("content error", id);
|
||||
console.log('content error', id);
|
||||
return;
|
||||
}
|
||||
infoTitle.textContent = "";
|
||||
infoTitle.textContent = '';
|
||||
}
|
||||
|
||||
function contentUpdateById(id, message) {
|
||||
let infoTitle = document.getElementById(id);
|
||||
let messageContent = chrome.i18n.getMessage(message);
|
||||
if (infoTitle === null) {
|
||||
console.log("content error", id, messageContent);
|
||||
console.log('content error', id, messageContent);
|
||||
return;
|
||||
}
|
||||
infoTitle.textContent = messageContent;
|
||||
}
|
||||
|
||||
contentUpdateById("TypeLabel", "siteLabel");
|
||||
contentUpdateById('TypeLabel', 'siteLabel');
|
||||
|
||||
contentUpdateById("CertLabel", "certLabel");
|
||||
contentUpdateById('CertLabel', 'certLabel');
|
||||
|
||||
function tabCheck(tabInfo) {
|
||||
// Information Section
|
||||
console.log("(cert) checking tab");
|
||||
var host = tabInfo[0].url.split(".i2p")[0] + ".i2p";
|
||||
console.log('(cert) checking tab');
|
||||
var host = tabInfo[0].url.split('.i2p')[0] + '.i2p';
|
||||
if (host.length < 51) {
|
||||
contentUpdateById("AddressInfo", "isHostName");
|
||||
contentUpdateById('AddressInfo', 'isHostName');
|
||||
} else {
|
||||
if (host.endsWith("b32.i2p")) {
|
||||
contentUpdateById("AddressInfo", "isBase32");
|
||||
if (host.endsWith('b32.i2p')) {
|
||||
contentUpdateById('AddressInfo', 'isBase32');
|
||||
}
|
||||
}
|
||||
if (host.startsWith("https")) {
|
||||
contentUpdateById("AddressCertInfo", "certPresent");
|
||||
console.log("(cert) initiating request to check server cert");
|
||||
fetch(host).then(response => {
|
||||
console.log("Updating cert information", response);
|
||||
if (host.startsWith('https')) {
|
||||
contentUpdateById('AddressCertInfo', 'certPresent');
|
||||
console.log('(cert) initiating request to check server cert');
|
||||
fetch(host).then((response) => {
|
||||
console.log('Updating cert information', response);
|
||||
});
|
||||
} else {
|
||||
contentUpdateById("AddressCertInfo", "certAbsent");
|
||||
|
BIN
clearweb.png
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 215 KiB |
26
config.js
@@ -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;
|
||||
|
111
content.js
@@ -2,54 +2,91 @@ function contentUpdateById(id, message) {
|
||||
let infoTitle = document.getElementById(id);
|
||||
let messageContent = chrome.i18n.getMessage(message);
|
||||
if (infoTitle === null) {
|
||||
console.log("content error", id, messageContent);
|
||||
console.log('content error', id, messageContent);
|
||||
return;
|
||||
}
|
||||
infoTitle.textContent = messageContent;
|
||||
}
|
||||
|
||||
// Information Section
|
||||
contentUpdateById("text-section-header", "extensionName");
|
||||
contentUpdateById("description", "extensionDescription");
|
||||
contentUpdateById("i2pbrowser-version", "extensionVersion");
|
||||
contentUpdateById("beta", "extensionStatus");
|
||||
contentUpdateById("proxy-check", "proxyFailedStatus");
|
||||
contentUpdateById('text-section-header', 'extensionName');
|
||||
contentUpdateById('description', 'extensionDescription');
|
||||
contentUpdateById('i2pbrowser-version', 'extensionVersion');
|
||||
contentUpdateById('proxy-check', 'proxyFailedStatus');
|
||||
|
||||
// Control Section
|
||||
contentUpdateById("controlHeader", "controlHeader");
|
||||
contentUpdateById("controlExplain", "controlExplain");
|
||||
contentUpdateById("clear-browser-data", "clearData");
|
||||
contentUpdateById("clear-desc", "clearDesc");
|
||||
contentUpdateById("enable-web-rtc", "enableWebRTC");
|
||||
contentUpdateById("rtcDesc", "rtcDesc");
|
||||
contentUpdateById("disable-history", "disableHistory");
|
||||
contentUpdateById("histDesc", "histDesc");
|
||||
contentUpdateById('controlHeader', 'controlHeader');
|
||||
contentUpdateById('controlExplain', 'controlExplain');
|
||||
contentUpdateById('clear-browser-data', 'clearData');
|
||||
contentUpdateById('clear-desc', 'clearDesc');
|
||||
contentUpdateById('enable-web-rtc', 'enableWebRTC');
|
||||
contentUpdateById('rtcDesc', 'rtcDesc');
|
||||
contentUpdateById('disable-history', 'disableHistory');
|
||||
contentUpdateById('histDesc', 'histDesc');
|
||||
|
||||
// Application Section
|
||||
contentUpdateById("applicationHeader", "applicationHeader");
|
||||
contentUpdateById("applicationExplain", "applicationExplain");
|
||||
contentUpdateById("window-visit-index", "windowVisitHelppage");
|
||||
contentUpdateById("help", "help");
|
||||
contentUpdateById("window-visit-router", "windowVisitConsole");
|
||||
contentUpdateById("routerConsole", "routerConsole");
|
||||
contentUpdateById("window-visit-homepage", "windowVisitHomepage");
|
||||
contentUpdateById("abouthome", "abouthome");
|
||||
contentUpdateById("window-visit-i2ptunnel", "windowVisitI2ptunnel");
|
||||
contentUpdateById("i2ptunnel", "i2ptunnel");
|
||||
contentUpdateById("window-visit-susimail", "windowVisitSusiMail");
|
||||
contentUpdateById("susimail", "susimail");
|
||||
contentUpdateById("window-visit-snark", "windowVisitSnark");
|
||||
contentUpdateById("snark", "snark");
|
||||
contentUpdateById('applicationHeader', 'applicationHeader');
|
||||
contentUpdateById('applicationExplain', 'applicationExplain');
|
||||
contentUpdateById('window-visit-index', 'windowVisitHelppage');
|
||||
contentUpdateById('help', 'help');
|
||||
contentUpdateById('window-visit-router', 'windowVisitConsole');
|
||||
contentUpdateById('routerConsole', 'routerConsole');
|
||||
contentUpdateById('window-visit-homepage', 'windowVisitHomepage');
|
||||
contentUpdateById('abouthome', 'abouthome');
|
||||
contentUpdateById('window-visit-i2ptunnel', 'windowVisitI2ptunnel');
|
||||
contentUpdateById('i2ptunnel', 'i2ptunnel');
|
||||
contentUpdateById('window-visit-susimail', 'windowVisitSusiMail');
|
||||
contentUpdateById('susimail', 'susimail');
|
||||
contentUpdateById('window-visit-snark', 'windowVisitSnark');
|
||||
contentUpdateById('snark', 'snark');
|
||||
|
||||
// Homepage Section
|
||||
contentUpdateById("window-visit-webpage", "windowVisitWebPage");
|
||||
contentUpdateById("webpage", "help");
|
||||
contentUpdateById("window-visit-sources", "windowVisitSources");
|
||||
contentUpdateById("sources", "sources");
|
||||
contentUpdateById("window-visit-releases", "windowVisitReleases");
|
||||
contentUpdateById("releases", "releases");
|
||||
contentUpdateById('window-visit-webpage', 'windowVisitWebPage');
|
||||
contentUpdateById('webpage', 'help');
|
||||
contentUpdateById('window-visit-sources', 'windowVisitSources');
|
||||
contentUpdateById('sources', 'sources');
|
||||
contentUpdateById('window-visit-releases', 'windowVisitReleases');
|
||||
contentUpdateById('releases', 'releases');
|
||||
|
||||
fetch("http://proxy.i2p").then(myJson => {
|
||||
console.log("FETCH RESULT", myJson);
|
||||
contentUpdateById("proxy-check", "proxySuccessStatus");
|
||||
fetch('http://proxy.i2p').then((myJson) => {
|
||||
contentUpdateById('proxy-check', 'proxySuccessStatus');
|
||||
let readyness = document.querySelectorAll('.readyness');
|
||||
if (readyness != null) {
|
||||
hide(readyness);
|
||||
}
|
||||
});
|
||||
|
||||
function hide(elements) {
|
||||
elements = elements.length ? elements : [elements];
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
elements[index].style.display = "none";
|
||||
}
|
||||
}
|
||||
|
||||
function unhide(elements) {
|
||||
elements = elements.length ? elements : [elements];
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
elements[index].style.display = "inline-block";
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: Don't hard-code this.
|
||||
fetch("http://127.0.0.1:7657/themes/console/light/images/i2plogo.png")
|
||||
.then((myJson) => {
|
||||
var consoleLinks = document.querySelectorAll(".application-info");
|
||||
unhide(consoleLinks);
|
||||
})
|
||||
.catch((error) => {
|
||||
var consoleLinks = document.querySelectorAll(".application-info");
|
||||
hide(consoleLinks);
|
||||
});
|
||||
|
||||
fetch("http://127.0.0.1:7657/jsonrpc/")
|
||||
.then((myJson) => {
|
||||
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
|
||||
unhide(toopieLinks);
|
||||
})
|
||||
.catch((error) => {
|
||||
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
|
||||
hide(toopieLinks);
|
||||
});
|
||||
|
18
context.js
@@ -1,5 +1,5 @@
|
||||
//var windowIds = []
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
var titlepref = chrome.i18n.getMessage('titlePreface');
|
||||
|
||||
function onError(error) {
|
||||
console.log(`Error : ${error}`);
|
||||
@@ -10,23 +10,23 @@ function eventHandler(event) {
|
||||
console.log(`Created window : ${windowInfo.id}`);
|
||||
browser.tabs.create({
|
||||
windowId: windowInfo.id,
|
||||
url: "about:blank",
|
||||
url: 'about:blank',
|
||||
cookieStoreId: event.target.dataset.identity
|
||||
});
|
||||
}
|
||||
if (event.target.dataset.action == "create") {
|
||||
if (event.target.dataset.action == 'create') {
|
||||
var creating = browser.tabs.create({
|
||||
cookieStoreId: event.target.dataset.identity
|
||||
});
|
||||
creating.then(onCreated, onError);
|
||||
}
|
||||
if (event.target.dataset.action == "close-all") {
|
||||
if (event.target.dataset.action == 'close-all') {
|
||||
browser.tabs
|
||||
.query({
|
||||
cookieStoreId: event.target.dataset.identity
|
||||
})
|
||||
.then(tabs => {
|
||||
browser.tabs.remove(tabs.map(rem => rem.id));
|
||||
.then((tabs) => {
|
||||
browser.tabs.remove(tabs.map((rem) => rem.id));
|
||||
});
|
||||
}
|
||||
event.preventDefault();
|
||||
@@ -52,9 +52,9 @@ if (browser.contextualIdentities === undefined) {
|
||||
} else {
|
||||
browser.contextualIdentities
|
||||
.query({
|
||||
name: titlepref
|
||||
name: titlepref,
|
||||
})
|
||||
.then(identities => {
|
||||
.then((identities) => {
|
||||
if (!identities.length) {
|
||||
div.innerText = "No identities returned from the API.";
|
||||
return;
|
||||
@@ -62,7 +62,7 @@ if (browser.contextualIdentities === undefined) {
|
||||
|
||||
for (let identity of identities) {
|
||||
let row = document.createElement("div");
|
||||
let span = document.createElement("span");
|
||||
let span = document.createElement("div");
|
||||
span.className = "identity";
|
||||
span.innerText = identity.name;
|
||||
span.style = `color: ${identity.color}`;
|
||||
|
173
debian/changelog
vendored
@@ -1,8 +1,170 @@
|
||||
i2psetproxy.js (0.113-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix checks on BRB, railroad containers
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Sun, 26 Sep 2021 00:37:22 -0400
|
||||
|
||||
i2psetproxy.js (0.111-1) UNRELEASED; urgency=low
|
||||
|
||||
* simplify background theme issue fix
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 07 Jul 2021 23:27:27 -0400
|
||||
|
||||
i2psetproxy.js (0.109-1) UNRELEASED; urgency=low
|
||||
|
||||
* connection interrupted mid release, retry failed validation. Bump and retry
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 07 Jul 2021 22:00:25 -0400
|
||||
|
||||
connection interrupted mid release, retry failed validation. Bump and retry
|
||||
|
||||
i2psetproxy.js (0.107-1) UNRELEASED; urgency=low
|
||||
|
||||
* Small code fixes
|
||||
* Fix for interference with non-I2P containers
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 07 Jul 2021 22:00:25 -0400
|
||||
|
||||
i2psetproxy.js (0.105-1) UNRELEASED; urgency=low
|
||||
|
||||
* Add help page for configuring i2pcontrol
|
||||
* Add help page for configuring i2psnark-rpc
|
||||
* Update the icons
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 26 May 2021 12:56:56 -0400
|
||||
|
||||
i2psetproxy.js (0.103-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix for double-test issue on /home.html page in the extension
|
||||
* Fix for broken options menu
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 26 May 2021 12:56:56 -0400
|
||||
|
||||
i2psetproxy.js (0.101-1) UNRELEASED; urgency=low
|
||||
|
||||
* Sweeping changes to styles
|
||||
* fix for issue when using noscript and visiting susimail
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 24 May 2021 3:41:35 -0400
|
||||
|
||||
i2psetproxy.js (0.99-1) UNRELEASED; urgency=low
|
||||
|
||||
* Sweeping changes to styles
|
||||
* fix for issue when using noscript and visiting susimail
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 24 May 2021 2:05:21 -0400
|
||||
|
||||
i2psetproxy.js (0.97-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix theme issue, add x-i2p-torrentlocation HEADER support
|
||||
|
||||
-- idk <hankhill19580@gmail.com> FRI, 5 FEB 2021 1:02:55 -0400
|
||||
|
||||
i2psetproxy.js (0.95-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix github #102 and #103
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Sat, 21 DEC 2020 6:15:05 -0400
|
||||
|
||||
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
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Sat, 10 NOV 2020 22:00:01 -0400
|
||||
|
||||
i2psetproxy.js (0.81-1) UNRELEASED; urgency=low
|
||||
|
||||
* X-I2P-TorrentLocation header
|
||||
* Visual tweaks
|
||||
* Deprecate localhost browser container permanently
|
||||
* Isolation rules improvements
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Sat, 07 NOV 2020 21:34:25 -0400
|
||||
|
||||
i2psetproxy.js (0.79-1) UNRELEASED; urgency=low
|
||||
|
||||
* Pin application tabs to the front of the tab order
|
||||
* Refine pageaction behavior
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 24 SEP 2020 20:18:03 -0400
|
||||
|
||||
i2psetproxy.js (0.77-1) UNRELEASED; urgency=low
|
||||
|
||||
* Implement x-i2p-location header
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 24 SEP 2020 20:18:03 -0400
|
||||
|
||||
i2psetproxy.js (0.73-1) UNRELEASED; urgency=low
|
||||
|
||||
* Update bookmarks format
|
||||
* Deprecate WebRTC State Management
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 22 JUN 2020 11:22:37 -0400
|
||||
|
||||
i2psetproxy.js (0.73-1) UNRELEASED; urgency=low
|
||||
|
||||
* Update bookmarks format
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 22 JUN 2020 19:21:23 -0400
|
||||
|
||||
i2psetproxy.js (0.71-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix incomplete bugfix from 0.69
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 24 MAR 2020 0:19:59 -0400
|
||||
|
||||
i2psetproxy.js (0.71-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix incomplete bugfix from 0.69
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 24 MAR 2020 0:19:59 -0400
|
||||
|
||||
i2psetproxy.js (0.69-1) UNRELEASED; urgency=low
|
||||
|
||||
* Add MuWire contextual ID
|
||||
* Fix bug occurring on certain modded I2P installs
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 24 MAR 2020 0:12:02 -0400
|
||||
|
||||
i2psetproxy.js (0.67-1) UNRELEASED; urgency=low
|
||||
|
||||
* Tweak some default settings that should have gone into 65
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 17 MAR 2020 22:58:55 -0400
|
||||
-- idk <hankhill19580@gmail.com> Tue, 17 MAR 2020 22:58:55 -0400
|
||||
|
||||
i2psetproxy.js (0.65-1) UNRELEASED; urgency=low
|
||||
|
||||
@@ -10,26 +172,26 @@ i2psetproxy.js (0.65-1) UNRELEASED; urgency=low
|
||||
* Use "pinned apptabs" to minimize the number of tabs occupied by an app
|
||||
* Get ready for self-hosted updates but with bittorrent because it's cooler
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 17 MAR 2020 22:58:55 -0400
|
||||
-- idk <hankhill19580@gmail.com> Tue, 17 MAR 2020 22:58:55 -0400
|
||||
|
||||
i2psetproxy.js (0.63-1) UNRELEASED; urgency=low
|
||||
|
||||
* other containerizers bugfix
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 02 MAR 2020 17:54:26 -0400
|
||||
-- idk <hankhill19580@gmail.com> Mon, 02 MAR 2020 17:54:26 -0400
|
||||
|
||||
i2psetproxy.js (0.61-1) UNRELEASED; urgency=low
|
||||
|
||||
* other containerizers bugfix
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 02 MAR 2020 17:46:24 -0400
|
||||
-- idk <hankhill19580@gmail.com> Mon, 02 MAR 2020 17:46:24 -0400
|
||||
|
||||
i2psetproxy.js (0.59-1) UNRELEASED; urgency=low
|
||||
|
||||
* transmission-rpc based torrent controls
|
||||
* bugfixes
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 25 FEB 2020 20:52:19 -0400
|
||||
-- idk <hankhill19580@gmail.com> Tue, 25 FEB 2020 20:52:19 -0400
|
||||
|
||||
i2psetproxy.js (0.57-1) UNRELEASED; urgency=low
|
||||
|
||||
@@ -115,4 +277,3 @@ i2psetproxy.js (0.31-1) UNRELEASED; urgency=low
|
||||
<nnnn is the bug number of your ITP>
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Thu, 01 Aug 2019 00:32:39 -0400
|
||||
T
|
116
handler.js
@@ -1,50 +1,73 @@
|
||||
function routerHost(url) {
|
||||
let hostname = "";
|
||||
let path = "";
|
||||
// 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") {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "i2ptunnelmgr";
|
||||
} else if (final === "i2psnark" || final === "torrents") {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "i2psnark";
|
||||
} else if (final === "webmail" || final === "susimail") {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "webmail";
|
||||
let final = str.split('/')[0];
|
||||
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
|
||||
console.log('(urlcheck) Tunnel application path', final);
|
||||
return 'i2ptunnelmgr';
|
||||
} else if (
|
||||
final === "home" ||
|
||||
final === "console" ||
|
||||
final === "dns" ||
|
||||
final.startsWith("config")
|
||||
final === 'i2psnark' ||
|
||||
final === 'torrents' ||
|
||||
final.startsWith('transmission') ||
|
||||
final.startsWith('tracker') ||
|
||||
url.includes(':7662')
|
||||
) {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "routerconsole";
|
||||
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('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')
|
||||
) {
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -54,28 +77,28 @@ 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;
|
||||
}
|
||||
|
||||
@@ -83,16 +106,15 @@ 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);
|
||||
}
|
||||
return requestDetails;
|
||||
};
|
||||
|
||||
browser.webRequest.onBeforeRequest.addListener(
|
||||
handlerSetup,
|
||||
{ urls: ["<all_urls>"] },
|
||||
["blocking"]
|
||||
);
|
||||
/*
|
||||
browser.webRequest.onBeforeRequest.addListener(handlerSetup, {
|
||||
urls: ['<all_urls>'],
|
||||
});
|
||||
*/
|
||||
|
324
home.css
@@ -1,34 +1,140 @@
|
||||
|
||||
|
||||
* {
|
||||
padding: 0;
|
||||
margin: 0
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%
|
||||
margin: 0 4%;
|
||||
padding: 0 20px;
|
||||
min-height: 100%;
|
||||
background: #9ab;
|
||||
background: repeating-linear-gradient(to bottom, #9ab, #89a 2px);
|
||||
scrollbar-color: #bcd #789;
|
||||
}
|
||||
a,
|
||||
button {
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 20px 40px;
|
||||
font-family: Open Sans, Noto Sans, Segoe UI, sans-serif;
|
||||
font-size: 12pt;
|
||||
color: #495057;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
border-left: 1px solid #495057;
|
||||
border-right: 1px solid #495057;
|
||||
box-shadow: 0 0 2px 2px rgba(0, 0, 0, .1);
|
||||
background: #f2f2f2;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
display: block;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-transform: uppercase;
|
||||
font-weight: 900;
|
||||
font-size: 200%;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin-bottom: 5px;
|
||||
text-align: right;
|
||||
text-transform: none;
|
||||
font-size: 90%;
|
||||
font-weight: 600;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 15px;
|
||||
width: 100%;
|
||||
line-height: 1.4;
|
||||
word-wrap: break-word;
|
||||
text-align: justify;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 10px 20px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-left: 0;
|
||||
padding: 12px 15px 15px 20px;
|
||||
width: calc(100% - 40px);
|
||||
text-align: justify;
|
||||
border: 1px solid #9ab;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff;
|
||||
background: #dee2e6;
|
||||
}
|
||||
|
||||
li li {
|
||||
padding-bottom: 0;
|
||||
width: calc(100% - 40px);
|
||||
text-align: left;
|
||||
border: none;
|
||||
border-top: 1px solid #9ab;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
li li:first-of-type {
|
||||
margin-top: 15px;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
li a:first-of-type {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#applicationExplain {
|
||||
float: unset;
|
||||
}
|
||||
|
||||
li+li {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
h3+ul, ul+h3, ul+h2 {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
a, button {
|
||||
color: #3b6bbf;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.applicationDesc {
|
||||
color: #81888f;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0
|
||||
outline: 0;
|
||||
}
|
||||
.applicationDesc:hover,
|
||||
a:hover,
|
||||
button:hover {
|
||||
color: #495057;
|
||||
|
||||
.applicationDesc:hover, a:hover, button:hover {
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
@@ -36,137 +142,63 @@ button {
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0
|
||||
}
|
||||
body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
color: #495057;
|
||||
background-attachment: fixed;
|
||||
background-size: 100% 100%;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.background {
|
||||
background-color: #f8f8ff;
|
||||
height: 100%
|
||||
}
|
||||
p {
|
||||
line-height: 32px;
|
||||
font-size: 17px;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
text-decoration: none;
|
||||
color: #495057;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.content {
|
||||
min-height: 3rem;
|
||||
padding: 1rem;
|
||||
margin: 1.5rem;
|
||||
display: inline-block;
|
||||
border: 1px solid #d9d9d6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
|
||||
background: #f8f8ff;
|
||||
min-width: 95%
|
||||
}
|
||||
#header,
|
||||
.application-info,
|
||||
.browser-info,
|
||||
.extended-info,
|
||||
.search-info {
|
||||
min-height: 3rem;
|
||||
padding: 1rem;
|
||||
margin-top: 1.5rem;
|
||||
min-height: 3rem;
|
||||
min-width: 95%;
|
||||
display: inline-block;
|
||||
border: 1px solid #d9d9d6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
background: #f8f8ff;
|
||||
min-width: 95%
|
||||
}
|
||||
h1 {
|
||||
margin-right: auto;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 32px;
|
||||
text-transform: uppercase;
|
||||
color: #41465f;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 2px 2px 0 0;
|
||||
padding-left: 5%
|
||||
}
|
||||
h2,
|
||||
h3 {
|
||||
margin-right: auto;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 25px;
|
||||
text-transform: uppercase;
|
||||
color: #41465f;
|
||||
border-radius: 2px 2px 0 0;
|
||||
width: 90%;
|
||||
padding-left: 5%
|
||||
}
|
||||
h4 {
|
||||
margin-right: auto;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 20px!important;
|
||||
text-transform: uppercase;
|
||||
color: #41465f;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 2px 2px 0 0;
|
||||
width: 90%;
|
||||
padding-left: 5%
|
||||
|
||||
#header, .application-info, .browser-info, .extended-info, .search-info {
|
||||
margin-top: 1.5rem;
|
||||
padding: 1rem;
|
||||
min-height: 3rem;
|
||||
min-width: 95%;
|
||||
display: inline-block;
|
||||
border: 1px solid #d9d9d6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
background: #f8f8ff;
|
||||
}
|
||||
|
||||
.showhider {
|
||||
margin-right: auto;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
text-transform: uppercase;
|
||||
background: 0 0!important;
|
||||
border: none;
|
||||
padding: 0!important;
|
||||
text-transform: uppercase;
|
||||
background: none !important;
|
||||
border: none;
|
||||
width: 90%;
|
||||
color: #3b6bbf;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0;
|
||||
text-align: left
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#links .showhider {
|
||||
font-size: 25px
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
.section-header {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-bottom: 80px
|
||||
}
|
||||
ul {
|
||||
margin-left: 2rem;
|
||||
list-style: none
|
||||
}
|
||||
li {
|
||||
min-height: 3rem;
|
||||
padding: .5rem;
|
||||
background: #dee2e6;
|
||||
border: 1px solid #dee2e6;
|
||||
width: 64%;
|
||||
min-width: 64%;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
|
||||
margin: .5rem .5rem .5rem 32%
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
#readyness {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
@@ -177,9 +209,10 @@ li {
|
||||
text-align: center!important;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
|
||||
display: inline-block
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#onboarding {
|
||||
min-height: 5rem;
|
||||
padding: .5rem;
|
||||
@@ -192,8 +225,9 @@ li {
|
||||
text-align: center!important;
|
||||
border: 1px solid #a48fe1;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
|
||||
#i2pbrowser-description {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
@@ -203,8 +237,9 @@ li {
|
||||
background: #dee2e6;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
|
||||
#linksExplain {
|
||||
min-height: 5rem;
|
||||
padding: .5rem;
|
||||
@@ -215,10 +250,10 @@ li {
|
||||
text-align: center!important;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
#applicationExplain,
|
||||
#controlExplain {
|
||||
|
||||
#applicationExplain, #controlExplain {
|
||||
min-height: 5rem;
|
||||
padding: .5rem;
|
||||
margin: .5rem;
|
||||
@@ -228,9 +263,10 @@ li {
|
||||
text-align: center!important;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
|
||||
float: left
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#proxyReady {
|
||||
min-height: 3rem;
|
||||
padding: .5rem;
|
||||
@@ -243,8 +279,9 @@ li {
|
||||
text-align: center!important;
|
||||
border: 1px solid #d9d9d6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
|
||||
#proxyUnready {
|
||||
min-height: 3rem;
|
||||
padding: .5rem;
|
||||
@@ -257,8 +294,9 @@ li {
|
||||
border: 1px solid #ffc56d;
|
||||
border-radius: 2px;
|
||||
background: #ffc56d;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
|
||||
#consoleOn {
|
||||
min-height: 3rem;
|
||||
padding: .5rem;
|
||||
@@ -271,30 +309,50 @@ li {
|
||||
border: 1px solid #f7e59a;
|
||||
border-radius: 2px;
|
||||
background: #f7e59a;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
|
||||
.onboardingContent {
|
||||
font-size: .8rem!important;
|
||||
text-align: left;
|
||||
display: none
|
||||
display: none;
|
||||
}
|
||||
|
||||
#info-content {
|
||||
display: none
|
||||
display: none;
|
||||
}
|
||||
.consoleOn:hover #proxy-check,
|
||||
.proxyReady:hover #proxy-check {
|
||||
|
||||
.consoleOn:hover #proxy-check, .proxyReady:hover #proxy-check {
|
||||
visibility: visible;
|
||||
opacity: 1
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
img.readyness {
|
||||
height: 100%;
|
||||
width: auto
|
||||
width: auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 399px) {
|
||||
.application-info {
|
||||
display: none
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1200px) {
|
||||
body {
|
||||
font-size: 10.5pt;
|
||||
}
|
||||
}
|
||||
|
||||
video {
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.hidden {
|
||||
visibility: none;
|
||||
display: none
|
||||
}
|
17
home.html
@@ -86,8 +86,8 @@
|
||||
</div>
|
||||
</li>-->
|
||||
|
||||
<li class="application">
|
||||
<a class="applicationName" href="toopie.html" id="window-visit-toopie">Toopie</a> <span class="applicationDesc" id="toopie">For information about your I2P router status, go here:</span>
|
||||
<li class="application window-visit-toopie">
|
||||
<a class="applicationName window-visit-toopie" href="toopie.html" id="window-visit-toopie">Toopie</a> <span class="applicationDesc window-visit-toopie" id="toopie">For information about your I2P router status, go here:</span>
|
||||
</li>
|
||||
|
||||
<li class="application">
|
||||
@@ -122,20 +122,20 @@
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<li class="application">
|
||||
<a href="http://i2p-projekt.i2p/" id="window-visit-i2p">I2P Project Homepage:</a> <span class="applicationDesc" id="i2ppage">More information is available here.</span>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<li class="application">
|
||||
<a href="/index.html" id="window-visit-homepage">Webextension Homepage:</a> <span class="applicationDesc" id="webpage">More information is available here.</span>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://gittest.i2p/idk/I2P-in-Private-Browsing-Mode-Firefox" id="window-visit-sources">Source Code:</a> <span class="applicationDesc" id="sources">Browse the source of this webextension or contribute here.</span>
|
||||
<li class="application">
|
||||
<a href="http://git.idk.i2p/idk/I2P-in-Private-Browsing-Mode-Firefox" id="window-visit-sources">Source Code:</a> <span class="applicationDesc" id="sources">Browse the source of this webextension or contribute here.</span>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://gittest.i2p/idk/I2P-in-Private-Browsing-Mode-Firefox/-/releases" id="window-visit-releases">Releases:</a> <span class="applicationDesc" id="releases">Check for new releases here.</span>
|
||||
<li class="application">
|
||||
<a href="http://git.idk.i2p/idk/I2P-in-Private-Browsing-Mode-Firefox/-/releases" id="window-visit-releases">Releases:</a> <span class="applicationDesc" id="releases">Check for new releases here.</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -147,5 +147,6 @@
|
||||
</div>
|
||||
<script src="home.js" type="text/javascript"></script>
|
||||
<script src="content.js" type="text/javascript"></script> <!--</div>-->
|
||||
<script src="i2pcontrol/i2pcontrol.js" type="text/javascript"></script> <!--</div>-->
|
||||
</body>
|
||||
</html>
|
||||
|
34
home.js
@@ -1,25 +1,25 @@
|
||||
document.addEventListener("click", clickEvent => {
|
||||
if (clickEvent.target.id === "onboardingButtonZero") {
|
||||
flipVisibility("onboardingContentZero");
|
||||
} else if (clickEvent.target.id === "onboardingButtonOne") {
|
||||
flipVisibility("onboardingContentOne");
|
||||
} else if (clickEvent.target.id === "onboardingButtonTwo") {
|
||||
flipVisibility("onboardingContentTwo");
|
||||
} else if (clickEvent.target.id === "onboardingButtonThree") {
|
||||
flipVisibility("onboardingContentThree");
|
||||
} else if (clickEvent.target.id === "onboardingButtonFour") {
|
||||
flipVisibility("onboardingContentFour");
|
||||
} else if (clickEvent.target.id === "fliplinks") {
|
||||
flipVisibility("info-content");
|
||||
document.addEventListener('click', (clickEvent) => {
|
||||
if (clickEvent.target.id === 'onboardingButtonZero') {
|
||||
flipVisibility('onboardingContentZero');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonOne') {
|
||||
flipVisibility('onboardingContentOne');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonTwo') {
|
||||
flipVisibility('onboardingContentTwo');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonThree') {
|
||||
flipVisibility('onboardingContentThree');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonFour') {
|
||||
flipVisibility('onboardingContentFour');
|
||||
} else if (clickEvent.target.id === 'fliplinks') {
|
||||
flipVisibility('info-content');
|
||||
}
|
||||
});
|
||||
|
||||
function flipVisibility(div) {
|
||||
console.log("(home) seeking flippable", div);
|
||||
console.log('(home) seeking flippable', div);
|
||||
let flippable = document.getElementById(div);
|
||||
if (flippable.style.display !== "block") {
|
||||
flippable.style.display = "block";
|
||||
if (flippable.style.display !== 'block') {
|
||||
flippable.style.display = 'block';
|
||||
} else {
|
||||
flippable.style.display = "none";
|
||||
flippable.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
167
host.js
@@ -1,117 +1,176 @@
|
||||
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") {
|
||||
if (
|
||||
hostname == 'c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p'
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
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];
|
||||
if (hostname === "127.0.0.1") {
|
||||
return true;
|
||||
} else if (hostname === "localhost") {
|
||||
return true;
|
||||
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;
|
||||
}
|
||||
|
||||
function extensionHost(url) {
|
||||
var prefix = browser.runtime
|
||||
.getURL('')
|
||||
.replace('moz-extension://', '')
|
||||
.replace('/', '');
|
||||
if (url.originUrl !== undefined) {
|
||||
var res = url.originUrl.startsWith(browser.runtime.getURL(""));
|
||||
var originUrl = url.originUrl
|
||||
.replace('moz-extension://', '')
|
||||
.replace('/', '');
|
||||
// console.log("(urlcheck) Extension application path", originUrl);
|
||||
// console.log("(urlcheck) Extension application path", prefix);
|
||||
var res = originUrl.startsWith(prefix);
|
||||
// console.log("(urlcheck) Extension application path", res);
|
||||
if (res) return res;
|
||||
}
|
||||
if (url.url !== undefined) {
|
||||
var res = url.url.startsWith(browser.runtime.getURL(""));
|
||||
if (url.documentUrl !== undefined) {
|
||||
// console.log("(urlcheck) Extension application path", originUrl);
|
||||
// console.log("(urlcheck) Extension application path", prefix);
|
||||
var res = originUrl.startsWith(prefix);
|
||||
// console.log("(urlcheck) Extension application path", res);
|
||||
if (res) return res;
|
||||
}
|
||||
console.log('(urlcheck) Extension application path', url);
|
||||
}
|
||||
|
||||
function i2pHostName(url) {
|
||||
let hostname = "";
|
||||
if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
let hostname = '';
|
||||
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];
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
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) {
|
||||
let hostname = "";
|
||||
let path = "";
|
||||
// console.log("(urlcheck) HOST URL CHECK");
|
||||
let hostname = '';
|
||||
let path = '';
|
||||
function pathcheck(str) {
|
||||
if (str != undefined) {
|
||||
let final = str.split("/")[0];
|
||||
if (final === "i2ptunnelmgr" || final === "i2ptunnel") {
|
||||
console.log("(urlcheck) 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 === 'i2psnark' ||
|
||||
final === 'torrents' ||
|
||||
final.startsWith('transmission') ||
|
||||
final.startsWith('tracker') ||
|
||||
url.includes(':7662')
|
||||
) {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "i2psnark";
|
||||
} else if (final === "webmail" || final === "susimail") {
|
||||
console.log("(urlcheck) 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('i2pbote')) {
|
||||
if (!url.includes('.png')) {
|
||||
console.log('(urlcheck) I2PBote application path', final);
|
||||
return 'i2pbote';
|
||||
}
|
||||
} else if (
|
||||
final === "home" ||
|
||||
final === "console" ||
|
||||
final === "dns" ||
|
||||
final.startsWith("config")
|
||||
final === 'home' ||
|
||||
final === 'console' ||
|
||||
final === 'dns' ||
|
||||
final === 'susidns' ||
|
||||
final.startsWith('susidns') ||
|
||||
final === 'sitemap' ||
|
||||
final.startsWith('config')
|
||||
) {
|
||||
console.log("(urlcheck) 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;
|
||||
|
BIN
i2p-https.png
Normal file
After Width: | Height: | Size: 184 KiB |
@@ -1,5 +1,8 @@
|
||||
i2pcontrol.js
|
||||
=============
|
||||
toopie.html/i2pcontrol.js
|
||||
=========================
|
||||
|
||||
This is inside of the webextension for now, but it's actually a fully-fledged,
|
||||
standalone library for talking to i2pcontrol.
|
||||
To enable toopie.html, the built in I2P monitoring system in this webextension,
|
||||
go to the [Web App Configuration page in the I2P Router and start I2PControl](http://127.0.0.1:7657/configwebapps).
|
||||
Click the "Start" button next to the menu item that says `jsonrpc`.
|
||||
|
||||
- 
|
||||
|
@@ -1,9 +1,11 @@
|
||||
var hello = "hello i2pcontrol";
|
||||
|
||||
if (browser.windows != undefined) {
|
||||
var hello = 'hello i2pcontrol';
|
||||
|
||||
function makeid(length) {
|
||||
var result = "";
|
||||
var result = '';
|
||||
var characters =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
var charactersLength = characters.length;
|
||||
for (var i = 0; i < length; i++) {
|
||||
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
||||
@@ -22,15 +24,15 @@ function send(
|
||||
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
|
||||
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"
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
redirect: "follow", // manual, *follow, error
|
||||
referrerPolicy: "no-referrer", // no-referrer, *client
|
||||
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);
|
||||
@@ -39,7 +41,7 @@ function send(
|
||||
|
||||
//console.log("http://" + control_host + ":" + control_port + "/" + control_path)
|
||||
return postData(
|
||||
"http://" + control_host + ":" + control_port + "/" + control_path + "/",
|
||||
'http://' + control_host + ':' + control_port + '/' + control_path + '/',
|
||||
message
|
||||
);
|
||||
}
|
||||
@@ -51,12 +53,12 @@ async function authenticate(
|
||||
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;
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -81,14 +83,14 @@ async function Echo(
|
||||
password = "itoopie"
|
||||
) {
|
||||
function echo(token) {
|
||||
console.log("(i2pcontrol) testing I2PControl connection");
|
||||
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;
|
||||
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);
|
||||
@@ -121,13 +123,13 @@ async function GetRate(
|
||||
) {
|
||||
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;
|
||||
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);
|
||||
@@ -160,12 +162,12 @@ async function I2PControl(
|
||||
) {
|
||||
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;
|
||||
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);
|
||||
@@ -204,12 +206,12 @@ async function RouterInfo(
|
||||
) {
|
||||
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;
|
||||
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);
|
||||
@@ -255,12 +257,12 @@ async function RouterManager(
|
||||
) {
|
||||
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;
|
||||
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);
|
||||
@@ -300,12 +302,12 @@ async function NetworkSetting(
|
||||
) {
|
||||
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;
|
||||
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);
|
||||
@@ -336,56 +338,78 @@ function UpdateNetworkSettingElementByID(
|
||||
}
|
||||
|
||||
function UpdateContents() {
|
||||
UpdateRouterInfoElementByID("i2p.router.status", "router-status");
|
||||
UpdateRouterInfoElementByID("i2p.router.uptime", "router-uptime");
|
||||
UpdateRouterInfoElementByID("i2p.router.version", "router-version");
|
||||
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"
|
||||
'i2p.router.net.bw.inbound.1s',
|
||||
'router-net-bw-inbound-1s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.net.bw.inbound.15s",
|
||||
"router-net-bw-inbound-15s"
|
||||
'i2p.router.net.bw.inbound.15s',
|
||||
'router-net-bw-inbound-15s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.net.bw.outbound.1s",
|
||||
"router-net-bw-outbound-1s"
|
||||
'i2p.router.net.bw.outbound.1s',
|
||||
'router-net-bw-outbound-1s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.net.bw.outbound.15s",
|
||||
"router-net-bw-outbound-15s"
|
||||
'i2p.router.net.bw.outbound.15s',
|
||||
'router-net-bw-outbound-15s'
|
||||
);
|
||||
UpdateRouterInfoElementByID("i2p.router.net.status", "router-net-status");
|
||||
UpdateRouterInfoElementByID('i2p.router.net.status', 'router-net-status');
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.net.tunnels.participating",
|
||||
"router-net-tunnels-participating"
|
||||
'i2p.router.net.tunnels.participating',
|
||||
'router-net-tunnels-participating'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.netdb.activepeers",
|
||||
"router-netdb-activepeers"
|
||||
'i2p.router.netdb.activepeers',
|
||||
'router-netdb-activepeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.netdb.fastpeers",
|
||||
"router-netdb-fastpeers"
|
||||
'i2p.router.netdb.fastpeers',
|
||||
'router-netdb-fastpeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.netdb.highcapacitypeers",
|
||||
"router-netdb-highcapacitypeers"
|
||||
'i2p.router.netdb.highcapacitypeers',
|
||||
'router-netdb-highcapacitypeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.netdb.isreseeding",
|
||||
"router-netdb-isreseeding"
|
||||
'i2p.router.netdb.isreseeding',
|
||||
'router-netdb-isreseeding'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.netdb.knownpeers",
|
||||
"router-netdb-knownpeers"
|
||||
'i2p.router.netdb.knownpeers',
|
||||
'router-netdb-knownpeers'
|
||||
);
|
||||
}
|
||||
|
||||
var done = Echo(hello);
|
||||
done.then(Done);
|
||||
done.then(Done).catch (Done);
|
||||
|
||||
function Done(output) {
|
||||
console.log("(i2pcontrol) I2PControl connection tested,", output);
|
||||
function hide(elements) {
|
||||
elements = elements.length ? elements : [elements];
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
elements[index].style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
BIN
i2pcontrol/i2pcontrol.png
Normal file
After Width: | Height: | Size: 109 KiB |
17
i2pcontrol/index.html
Normal file
@@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>I2P in Private Browsing Mode</title>
|
||||
<link rel="stylesheet" type="text/css" href="../home.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../sidebar.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1 id="toopie.htmli2pcontrol.js">toopie.html/i2pcontrol.js</h1>
|
||||
<p>To enable toopie.html, the built in I2P monitoring system in this webextension, go to the <a href="http://127.0.0.1:7657/configwebapps">Web App Configuration page in the I2P Router and start I2PControl</a>. Click the "Start" button next to the menu item that says <code>jsonrpc</code>.</p>
|
||||
<ul>
|
||||
<li><img src="i2pcontrol.png" title="fig:" alt="i2pcontrol.png" /></li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
BIN
i2ppb-0.77@eyedeekay.github.io.xpi.torrent
Normal file
Before Width: | Height: | Size: 213 KiB After Width: | Height: | Size: 327 KiB |
BIN
i2psnark-integrate.png
Normal file
After Width: | Height: | Size: 222 KiB |
BIN
i2psnark.png
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 100 KiB |
BIN
i2ptunnel.png
Before Width: | Height: | Size: 209 KiB After Width: | Height: | Size: 197 KiB |
0
icons/README.md
Normal file
BIN
icons/browse.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
icons/i2plogo.png
Normal file
After Width: | Height: | Size: 17 KiB |
@@ -1,119 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="109.95727mm"
|
||||
height="27.706699mm"
|
||||
viewBox="0 0 109.95727 27.706699"
|
||||
version="1.1"
|
||||
id="svg4773"
|
||||
inkscape:version="0.92.1 r"
|
||||
sodipodi:docname="horizontal_color.svg">
|
||||
<defs
|
||||
id="defs4767" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.98994949"
|
||||
inkscape:cx="125.25987"
|
||||
inkscape:cy="51.24018"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="740"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4770">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-55.768389,-115.63486)">
|
||||
<g
|
||||
id="g5355">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4516"
|
||||
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46456254"
|
||||
d="m 55.768389,116.32817 h 5.625388 v 26.53071 h -5.625388 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4528"
|
||||
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46456254"
|
||||
d="M 83.567492,142.85915 H 64.806129 v -3.94692 l 6.737086,-6.81049 c 1.994831,-2.04361 3.297929,-3.46052 3.910222,-4.24981 0.611829,-0.78977 1.052235,-1.52051 1.321681,-2.19367 0.268981,-0.67315 0.403705,-1.37046 0.403705,-2.09285 0,-1.07686 -0.296392,-1.8787 -0.890103,-2.40504 -0.593711,-0.52589 -1.38579,-0.78929 -2.377165,-0.78929 -1.040621,0 -2.050116,0.23877 -3.028948,0.71589 -0.979764,0.47756 -2.001336,1.15675 -3.066113,2.03756 l -3.083766,-3.65285 c 1.321681,-1.1261 2.416654,-1.92143 3.285851,-2.38646 0.868731,-0.46502 1.817367,-0.8232 2.845444,-1.07406 1.028078,-0.25087 2.178334,-0.3763 3.451235,-0.3763 1.676607,0 3.157633,0.30615 4.442612,0.91798 1.284979,0.61229 2.282403,1.46848 2.992248,2.56995 0.709385,1.10148 1.064782,2.36231 1.064782,3.78154 0,1.23667 -0.217415,2.39575 -0.651785,3.47912 -0.434369,1.08288 -1.107514,2.19365 -2.01946,3.33183 -0.911472,1.13818 -2.517923,2.75997 -4.818901,4.86443 l -3.451235,3.24962 v 0.2569 h 11.693973 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4532"
|
||||
style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46456254"
|
||||
d="m 92.213601,128.81343 h 1.850822 c 1.730025,0 3.024298,-0.34145 3.88374,-1.02529 0.858507,-0.68337 1.288228,-1.67846 1.288228,-2.98528 0,-1.31843 -0.360032,-2.29215 -1.079636,-2.92164 -0.720078,-0.62854 -1.848504,-0.94352 -3.384343,-0.94352 h -2.558811 z m 12.703009,-4.21033 c 0,2.85566 -0.89243,5.03911 -2.67682,6.55126 -1.78485,1.51261 -4.322284,2.26845 -7.612787,2.26845 h -2.413402 v 9.43621 h -5.625393 v -26.53071 h 8.474561 c 3.218022,0 5.664411,0.69266 7.340551,2.078 1.6752,1.38532 2.51329,3.45076 2.51329,6.19679" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4536"
|
||||
style="fill:#ffc434;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46456254"
|
||||
d="m 121.18308,137.09597 c 0,-3.44937 -2.79621,-6.24557 -6.24559,-6.24557 -3.44937,0 -6.24557,2.7962 -6.24557,6.24557 0,3.44939 2.7962,6.24559 6.24557,6.24559 3.44938,0 6.24559,-2.7962 6.24559,-6.24559" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4540"
|
||||
style="fill:#60ab60;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46456254"
|
||||
d="m 121.18308,122.24846 c 0,-3.44937 -2.79621,-6.24557 -6.24559,-6.24557 -3.44937,0 -6.24557,2.7962 -6.24557,6.24557 0,3.44938 2.7962,6.24559 6.24557,6.24559 3.44938,0 6.24559,-2.79621 6.24559,-6.24559" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4544"
|
||||
style="fill:#e15647;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46456254"
|
||||
d="m 136.03063,137.09597 c 0,-3.44937 -2.7962,-6.24557 -6.24557,-6.24557 -3.44939,0 -6.24559,2.7962 -6.24559,6.24557 0,3.44939 2.7962,6.24559 6.24559,6.24559 3.44937,0 6.24557,-2.7962 6.24557,-6.24559" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4548"
|
||||
style="fill:#ffc434;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46456254"
|
||||
d="m 136.03063,122.24846 c 0,-3.44937 -2.7962,-6.24557 -6.24557,-6.24557 -3.44939,0 -6.24559,2.7962 -6.24559,6.24557 0,3.44938 2.7962,6.24559 6.24559,6.24559 3.44937,0 6.24557,-2.79621 6.24557,-6.24559" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4552"
|
||||
style="fill:#ffc434;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46456254"
|
||||
d="m 150.87814,137.09597 c 0,-3.44937 -2.7962,-6.24557 -6.24557,-6.24557 -3.44938,0 -6.24559,2.7962 -6.24559,6.24557 0,3.44939 2.79621,6.24559 6.24559,6.24559 3.44937,0 6.24557,-2.7962 6.24557,-6.24559" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4556"
|
||||
style="fill:#60ab60;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46456254"
|
||||
d="m 150.87814,122.24846 c 0,-3.44937 -2.7962,-6.24557 -6.24557,-6.24557 -3.44938,0 -6.24559,2.7962 -6.24559,6.24557 0,3.44938 2.79621,6.24559 6.24559,6.24559 3.44937,0 6.24557,-2.79621 6.24557,-6.24559" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4560"
|
||||
style="fill:#60ab60;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46456254"
|
||||
d="m 165.72566,137.09597 c 0,-3.44937 -2.7962,-6.24557 -6.24559,-6.24557 -3.44937,0 -6.24557,2.7962 -6.24557,6.24557 0,3.44939 2.7962,6.24559 6.24557,6.24559 3.44939,0 6.24559,-2.7962 6.24559,-6.24559" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4564"
|
||||
style="fill:#e15647;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46456254"
|
||||
d="m 165.72566,122.24846 c 0,-3.44937 -2.7962,-6.24557 -6.24559,-6.24557 -3.44937,0 -6.24557,2.7962 -6.24557,6.24557 0,3.44938 2.7962,6.24559 6.24557,6.24559 3.44939,0 6.24559,-2.79621 6.24559,-6.24559" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 6.9 KiB |
BIN
icons/infotoopie.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
icons/infotoopiebt.png
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
icons/infotoopies.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
icons/infotoopiesbt.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
icons/local_up.png
Normal file
After Width: | Height: | Size: 404 B |
BIN
icons/logo.png
Before Width: | Height: | Size: 5.8 KiB |
BIN
icons/toopie.png
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 6.3 KiB |
BIN
images/gear.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
59
images/restart.svg
Normal file
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
sodipodi:docname="restart.svg"
|
||||
id="svg22"
|
||||
version="1.1"
|
||||
viewBox="0 0 512 512"
|
||||
role="img"
|
||||
class="svg-inline--fa fa-sync-alt fa-w-16"
|
||||
data-icon="sync-alt"
|
||||
data-prefix="fas"
|
||||
focusable="false"
|
||||
aria-hidden="true">
|
||||
<metadata
|
||||
id="metadata28">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs26" />
|
||||
<sodipodi:namedview
|
||||
inkscape:current-layer="svg22"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="31"
|
||||
inkscape:window-x="0"
|
||||
inkscape:cy="256"
|
||||
inkscape:cx="256"
|
||||
inkscape:zoom="1.6757812"
|
||||
showgrid="false"
|
||||
id="namedview24"
|
||||
inkscape:window-height="1026"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff" />
|
||||
<path
|
||||
style="fill:#526bce;fill-opacity:1"
|
||||
id="path20"
|
||||
d="M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"
|
||||
fill="currentColor" />
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
59
images/shutdown.svg
Normal file
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
|
||||
sodipodi:docname="shutdown.svg"
|
||||
id="svg32"
|
||||
version="1.1"
|
||||
viewBox="0 0 512 512"
|
||||
role="img"
|
||||
class="svg-inline--fa fa-power-off fa-w-16"
|
||||
data-icon="power-off"
|
||||
data-prefix="fas"
|
||||
focusable="false"
|
||||
aria-hidden="true">
|
||||
<metadata
|
||||
id="metadata38">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs36" />
|
||||
<sodipodi:namedview
|
||||
inkscape:current-layer="svg32"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="31"
|
||||
inkscape:window-x="0"
|
||||
inkscape:cy="256"
|
||||
inkscape:cx="256"
|
||||
inkscape:zoom="1.6757812"
|
||||
showgrid="false"
|
||||
id="namedview34"
|
||||
inkscape:window-height="1026"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff" />
|
||||
<path
|
||||
style="fill:#526bce;fill-opacity:1"
|
||||
id="path30"
|
||||
d="M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z"
|
||||
fill="currentColor" />
|
||||
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
56
index.html
@@ -17,6 +17,19 @@ user requests them. It also adds convenience and management features, like an
|
||||
embedded I2P console and Bittorrent integration with clients using the
|
||||
transmission-rpc API.</p>
|
||||
|
||||
<h2>Privacy Policy</h2>
|
||||
|
||||
<p>This browser extension does not collect any personal information. It requires
|
||||
access to local storage and browsing data permissions in order to delete them
|
||||
when directed to by the user. This browser extension does not transmit any
|
||||
information to any third party, nor will it, ever.</p>
|
||||
|
||||
<p>This browser extension cannot influence telemetry carried out by browser vendors
|
||||
to determine performance in their distribution channels, nor can it mitigate any
|
||||
other browser vendor telemetry. </p>
|
||||
|
||||
<p>This browser extension is entirely Free, Open-Source software.</p>
|
||||
|
||||
<h2>Installation(Cross-Platform):</h2>
|
||||
|
||||
<p>For desktop users this addon is available from addons.mozilla.org, where you
|
||||
@@ -44,7 +57,7 @@ Clearnet Bittorrent network(With a web seed to support it in case one goes
|
||||
dead).</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="magnet:?xt=urn:btih:e7bbb4695f63d068522713028987626284aa91d0">Magnet Link</a></li>
|
||||
<li><a href="magnet:?xl=2485magnetsubdn=i2ppb%40eyedeekay.github.io.xpi.torrentmagnetsubxt=urn:tree:tiger:w6kewvpw25bnau2rwkczbnryrjdzn54ietse3zimagnetsubxt=urn:ed2k:1cd9743fb664404298b7f2ad7ee45db0magnetsubxt=urn:aich:4vhcsp6t3c2mkjzds2etixyinyj7xtkp">Magnet Link</a></li>
|
||||
<li><a href="./i2ppb@eyedeekay.github.io.xpi.torrent">Get the .torrent file</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -107,13 +120,20 @@ place each i2p application/plugin under it's own origin, shortening router
|
||||
console URL's and placing applications under their own origin.</li>
|
||||
<li><img src="routerconsole.png" alt="Visiting routerconsole" title="" /></li>
|
||||
<li>[Done] <strong>Handle Torrents</strong> by talking to i2psnark-rpc plugin and then
|
||||
adding them directly into the Firefox downloads drop-downs, menus, etc. If I
|
||||
can.</li>
|
||||
adding them directly into the Firefox downloads drop-downs, menus, etc. Enable
|
||||
the use of I2PSnark as a peer-to-peer delivery mechanism for media files.</li>
|
||||
<li><img src="i2psnark.png" alt="Visiting i2psnark" title="" /></li>
|
||||
<li><img src="transmissionrpc.png" alt="Monitoring torrents" title="" /></li>
|
||||
<li>[Started] Indicate the level of authenticity provided by TLS. TLS is
|
||||
<li>[Done] <strong>Enhance</strong> the I2P browsing experience by allowing site developers
|
||||
distribute some or all of their resources as torrents, allowing the torrents to
|
||||
be treated effectively as a CDN.</li>
|
||||
<li><img src="x-i2p-torrentlocation.png" alt="Distribute your site as a torrent." title="" /></li>
|
||||
<li>[Done] <strong>Indicate</strong> the level of authenticity provided by TLS. TLS is
|
||||
optional on I2P for now, but some sites offer it anyway. TLS support is
|
||||
experimental and in the works.</li>
|
||||
<li><img src="i2p-https.png" alt="Use HTTPS with your I2P Site." title="" /></li>
|
||||
<li>[Done] <strong>Provide</strong> alternate, in-I2P destinations for web sites that want to
|
||||
mirror their content within I2P.</li>
|
||||
<li>[barely started] <strong>Isolate</strong> traffic by contextual identity to it's own HTTP
|
||||
Proxy tunnel, each reflecting it's own pseudonymous identity within I2P. The
|
||||
contextual identities. For now, the contextual identities used to manage
|
||||
@@ -192,10 +212,13 @@ from a meeting about Fusion.</li>
|
||||
a blog about Tor and the relationship they have to Firefox re: TBB, Fusion.</li>
|
||||
</ul>
|
||||
|
||||
<h2>The Old Version</h2>
|
||||
<h2>The <strong>Other</strong> Version</h2>
|
||||
|
||||
<p>New versions of this extension create an I2P in Private Browsing mode instead.
|
||||
Since this is a drastic change to the behavior of the old plugin, a new entry
|
||||
<p>New versions of this extension create an I2P in Private Browsing mode instead,
|
||||
using container tabs.</p>
|
||||
|
||||
<p>Since this is a drastic change to the behavior of the old plugin, and since there
|
||||
is no UI a new entry
|
||||
for the new plugin has been made at a new location on addons.mozilla.org.</p>
|
||||
|
||||
<ul>
|
||||
@@ -205,22 +228,7 @@ for the new plugin has been made at a new location on addons.mozilla.org.</p>
|
||||
|
||||
<h2>Android usage:</h2>
|
||||
|
||||
<p>Open the following link
|
||||
<a href="https://github.com/eyedeekay/i2psetproxy.js/releases/">Github Releases Version</a>
|
||||
in the browser you want to use for I2P. Firefox will warn you that it is about
|
||||
to install an extension and indicate the permissions required. Read them over
|
||||
and when you're ready, accept them. That's all it should take, your browser is
|
||||
now configured to use I2P.</p>
|
||||
|
||||
<h3>Android addons.mozilla.org(Temporarily Disabled)</h3>
|
||||
|
||||
<p>If you would prefer to recieve automatic updates from AMO, the correct product
|
||||
page for this plugin is
|
||||
<a href="https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/">I2P In Private Browsing</a>.
|
||||
This absolutely requires a working outproxy. If you want to avoid the use of AMO
|
||||
for updates, you can download the identical plugin from this repository's
|
||||
releases page. The latest AMO Plugin will always be identical to the latest
|
||||
github release, except for the version number, which must be incremented for
|
||||
submission to AMO.</p>
|
||||
<p>Use the old version, on either an old version of Firefox(pre-68) or by enabling
|
||||
this custom collection: [Recommended Plugins] https://addons.mozilla.org/en-US/firefox/collections/14614396/I2P-Browser-Fork/</p>
|
||||
</body>
|
||||
</html>
|
||||
|
27
info.css
@@ -1,24 +1,26 @@
|
||||
body,
|
||||
html {
|
||||
width: 50rem
|
||||
}
|
||||
a {
|
||||
margin: 10px
|
||||
width: 600px
|
||||
}
|
||||
.panel {
|
||||
margin: 5px
|
||||
margin: 5px;
|
||||
width: 500px
|
||||
}
|
||||
.panel-section-header {
|
||||
width: 500px
|
||||
}
|
||||
#text-section-torrents-header {
|
||||
width: 500px
|
||||
}
|
||||
span.identity {
|
||||
width: 100px;
|
||||
display: inline-block;
|
||||
width: 500px;
|
||||
display: block;
|
||||
margin-left: 1em
|
||||
}
|
||||
figcaption {
|
||||
display: inline
|
||||
display: block
|
||||
}
|
||||
.section-header {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-bottom: 8px
|
||||
}
|
||||
p {
|
||||
@@ -56,5 +58,8 @@ img.readyness {
|
||||
display: none
|
||||
}
|
||||
.torrent-progress {
|
||||
width: 100%
|
||||
width: 90%
|
||||
}
|
||||
.tabicon {
|
||||
width: 32px
|
||||
}
|
130
info.js
@@ -1,10 +1,10 @@
|
||||
function checkPeerConnection() {
|
||||
let getting = browser.privacy.network.peerConnectionEnabled.get({});
|
||||
getting.then(got => {
|
||||
getting.then((got) => {
|
||||
let webrtc = got.value;
|
||||
console.log("checking webrtc", webrtc);
|
||||
if (document.getElementById("enable-web-rtc") !== null)
|
||||
document.getElementById("enable-web-rtc").checked = webrtc;
|
||||
console.log('checking webrtc', webrtc);
|
||||
if (document.getElementById('enable-web-rtc') !== null)
|
||||
document.getElementById('enable-web-rtc').checked = webrtc;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -29,7 +29,7 @@ checkSnowflake();
|
||||
|
||||
function checkHistory() {
|
||||
let getting = browser.storage.local.get("disable_history");
|
||||
getting.then(got => {
|
||||
getting.then((got) => {
|
||||
let disable_history = got.disable_history;
|
||||
if (disable_history == undefined) {
|
||||
disable_history = false;
|
||||
@@ -42,11 +42,11 @@ function checkHistory() {
|
||||
|
||||
checkHistory();
|
||||
|
||||
document.addEventListener("click", clickEvent => {
|
||||
document.addEventListener("click", (clickEvent) => {
|
||||
if (clickEvent.target.id === "window-create-help-panel") {
|
||||
let createData = {
|
||||
type: "panel",
|
||||
incognito: true
|
||||
incognito: true,
|
||||
};
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(() => {
|
||||
@@ -55,12 +55,15 @@ document.addEventListener("click", clickEvent => {
|
||||
} else if (clickEvent.target.id === "window-create-news-panel") {
|
||||
let createData = {
|
||||
type: "panel",
|
||||
incognito: true
|
||||
incognito: true,
|
||||
};
|
||||
let creating = browser.tabs.create(createData);
|
||||
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");
|
||||
@@ -68,7 +71,7 @@ document.addEventListener("click", clickEvent => {
|
||||
const url = "http://" + controlHost + ":" + controlPort;
|
||||
Http.open("GET", url);
|
||||
Http.send();
|
||||
Http.onreadystatechange = event => {
|
||||
Http.onreadystatechange = (event) => {
|
||||
console.log(Http.responseText);
|
||||
};
|
||||
}
|
||||
@@ -79,6 +82,32 @@ document.addEventListener("click", clickEvent => {
|
||||
} else if (clickEvent.target.id === "label-router-shutdown") {
|
||||
console.log("attempting to initiate graceful shutdown");
|
||||
RouterManager("ShutdownGraceful");
|
||||
} else if (clickEvent.target.id === "label-router-status") {
|
||||
if (document.getElementById("label-status-list").style.display !== "none") {
|
||||
console.log("hiding label-status-list");
|
||||
document.getElementById("label-status-list").style.display = "none";
|
||||
} else {
|
||||
console.log("showing label-status-list");
|
||||
document.getElementById("label-status-list").style.display = "block";
|
||||
}
|
||||
} else if (clickEvent.target.id === "label-router-peers") {
|
||||
if (document.getElementById("label-peers-list").style.display !== "none") {
|
||||
console.log("hiding label-peers-list");
|
||||
document.getElementById("label-peers-list").style.display = "none";
|
||||
} else {
|
||||
console.log("showing label-peers-list");
|
||||
document.getElementById("label-peers-list").style.display = "block";
|
||||
}
|
||||
} else if (clickEvent.target.id === "label-router-bandwidth") {
|
||||
if (
|
||||
document.getElementById("label-bandwidth-list").style.display !== "none"
|
||||
) {
|
||||
console.log("hiding label-bandwidth-list");
|
||||
document.getElementById("label-bandwidth-list").style.display = "none";
|
||||
} else {
|
||||
console.log("showing label-bandwidth-list");
|
||||
document.getElementById("label-bandwidth-list").style.display = "block";
|
||||
}
|
||||
} else if (clickEvent.target.id === "search-submit") {
|
||||
console.log("attempting to create search tab");
|
||||
goSearch();
|
||||
@@ -94,6 +123,12 @@ document.addEventListener("click", clickEvent => {
|
||||
} else if (clickEvent.target.id === "window-visit-index") {
|
||||
console.log("attempting to create index tab");
|
||||
goIndex();
|
||||
} else if (clickEvent.target.id === "window-visit-torrent") {
|
||||
console.log("attempting to create torrent tab");
|
||||
goTorrent();
|
||||
} else if (clickEvent.target.id === "window-visit-help") {
|
||||
console.log("attempting to create torrent tab");
|
||||
goHelp();
|
||||
} else if (clickEvent.target.id === "window-visit-homepage") {
|
||||
console.log("attempting to create homepage tab");
|
||||
goHome();
|
||||
@@ -133,12 +168,21 @@ document.addEventListener("click", clickEvent => {
|
||||
clickEvent.preventDefault();
|
||||
});
|
||||
|
||||
window.onload = function (e) {
|
||||
if (document.getElementById("label-peers-list") != null) {
|
||||
document.getElementById("label-peers-list").style.display = "none";
|
||||
}
|
||||
if (document.getElementById("label-bandwidth-list") != null) {
|
||||
document.getElementById("label-bandwidth-list").style.display = "none";
|
||||
}
|
||||
};
|
||||
|
||||
function proxyReadiness() {
|
||||
console.log(this.responseText);
|
||||
}
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os != "android") {
|
||||
browser.history.onVisited.addListener(onVisited);
|
||||
}
|
||||
@@ -159,18 +203,21 @@ function showTorrentsMenu() {
|
||||
}
|
||||
|
||||
function goHome() {
|
||||
function onTabError() {
|
||||
console.log("Help tab created");
|
||||
}
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port == "7644") {
|
||||
let createRhizomeData = {
|
||||
url: "about:I2p"
|
||||
url: "about:I2p",
|
||||
};
|
||||
console.log("visiting homepage");
|
||||
let creating = browser.tabs.create(createRhizomeData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
} else {
|
||||
let createData = {
|
||||
url: "home.html"
|
||||
url: "home.html",
|
||||
};
|
||||
console.log("visiting homepage");
|
||||
let creating = browser.tabs.create(createData);
|
||||
@@ -178,23 +225,49 @@ function goHome() {
|
||||
}
|
||||
console.log("(bookmarks) adding home page bookmark");
|
||||
}
|
||||
console.log("(bookmarks) checking if we're running in an I2P Browser");
|
||||
var gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
if (browser.windows != undefined){
|
||||
console.log("(bookmarks) checking if we're running in an I2P Browser");
|
||||
var gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
}
|
||||
|
||||
function goIndex() {
|
||||
function onTabError() {
|
||||
console.log("Help tab created");
|
||||
console.log("Help tab not created");
|
||||
}
|
||||
let createData = {
|
||||
url: "index.html"
|
||||
url: "index.html",
|
||||
};
|
||||
console.log("visiting help");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
}
|
||||
|
||||
function goTorrent() {
|
||||
function onTabError() {
|
||||
console.log("Torrent Help tab not created");
|
||||
}
|
||||
let createData = {
|
||||
url: "torrent/index.html",
|
||||
};
|
||||
console.log("visiting torrent help");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
}
|
||||
|
||||
function goHelp() {
|
||||
function onTabError() {
|
||||
console.log("Torrent Help tab not created");
|
||||
}
|
||||
let createData = {
|
||||
url: "i2pcontrol/index.html",
|
||||
};
|
||||
console.log("visiting torrent help");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
}
|
||||
|
||||
function goToopie() {
|
||||
function onTabError() {
|
||||
console.log("Toopie tab created");
|
||||
@@ -216,7 +289,7 @@ function goSearch() {
|
||||
url:
|
||||
"http://yacy.idk.i2p/yacysearch.html?" +
|
||||
"query=" +
|
||||
document.getElementById("search-query").value
|
||||
document.getElementById("search-query").value,
|
||||
};
|
||||
console.log("visiting legwork");
|
||||
let creating = browser.tabs.create(createData);
|
||||
@@ -234,7 +307,7 @@ function goTunnel() {
|
||||
console.log("I2PTunnel tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/i2ptunnel"
|
||||
url: "http://" + routerAddr() + "/i2ptunnel",
|
||||
};
|
||||
console.log("visiting i2ptunnel");
|
||||
let creating = browser.tabs.create(createData);
|
||||
@@ -246,7 +319,7 @@ function goMail() {
|
||||
console.log("Mail tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/susimail"
|
||||
url: "http://" + routerAddr() + "/susimail",
|
||||
};
|
||||
console.log("visiting mail");
|
||||
let creating = browser.tabs.create(createData);
|
||||
@@ -258,7 +331,7 @@ function goSnark() {
|
||||
console.log("Snark tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/i2psnark"
|
||||
url: "http://" + routerAddr() + "/i2psnark",
|
||||
};
|
||||
console.log("visiting snark");
|
||||
let creating = browser.tabs.create(createData);
|
||||
@@ -277,7 +350,7 @@ function onVisited(historyItem) {
|
||||
function onRemoved() {
|
||||
var searching = browser.history.search({
|
||||
text: historyItem.url,
|
||||
startTime: 0
|
||||
startTime: 0,
|
||||
});
|
||||
searching.then(onCleaned);
|
||||
}
|
||||
@@ -294,6 +367,15 @@ if (UpdateContents !== undefined) UpdateContents();
|
||||
const minutes = 0.2;
|
||||
const interval = minutes * 60 * 1000;
|
||||
|
||||
setInterval(function() {
|
||||
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");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
76
issues.csv
Normal file
@@ -0,0 +1,76 @@
|
||||
"title","description"
|
||||
"Moar Bookmarks","A larger set of default bookmarks in their own directory would probably be good. Stuff like the forums, zzz's forums, gitlab, stats, identiguy, postman, echobot test, fingerprint test, etc."
|
||||
"privacy-breach-generic false positive with lintian","We make a request to proxy.i2p, a sort of loopback site, to ensure that the proxy is ready for the browser and provide user feedback. Lintian sees proxy.i2p as a remote site, which it isn't. Given this, the Warning issued by lintian is a false positive. This should be handled somehow."
|
||||
"App-tabs for Project sites?","Not sure if this is a good idea. May want to talk to Simply Secure about it."
|
||||
"Descriptive Proxy Error Page","When the proxy isn't ready, but the user enters an I2P browsing tab, provide a descriptive error page to guide the user to a solution, even if that solution is to tell them to wait 2 minutes.
|
||||
|
||||
States should be described:
|
||||
|
||||
- Router Not Present: There is no indication that I2P is installed on the system. Direct them to an I2P distribution.
|
||||
- HTTP Proxy Not Ready: The router is present, but the HTTP Proxy is not up yet. Wait 2 minutes, if t>2 minutes, direct them to /i2ptunnel to troubleshoot."
|
||||
"More intuitive history management, better programming interface","Right now history management is from before it used contextual identities, with some hacks on top. It needs to be changed to a better interface, which simply takes a contextual identity and clears history based on that information. This will improve security, reliability, and be useful in non-I2P contexts in the future."
|
||||
"Reseed over WebRTC Data Channel","This can't be done in just this extension, but this extension is probably an important component of a future plan in which this is straightforward. This is the trickiest thing I've tried so far, K, let's define some phases here...
|
||||
|
||||
Phase 0: Design
|
||||
=============
|
||||
|
||||
We're pretty different from Tor in the places where Snowflake would really matter, but it's an inspiring effort and a cool product. This process probably won't bear much resemblance to Snowflake when it's all designed, but Snowflake was the original inspiration for the idea.
|
||||
|
||||
What we want to do is make it possible for I2P users to easily reseed eachother in a peer-to-peer way when necessary. It must be done no more often than a normal reseed, and it must only ever be client initiated.
|
||||
|
||||
This is **not** a webRTC transport for I2P. That would be an entirely different project. Especially if it were to do something genuinely insane like try to incorporate browser users not otherwise running I2P into the routing process. That would be crazy, right? Right? (It might not actually be that crazy but I have enough to think about right now). This is only for reseeds.
|
||||
|
||||
Questions
|
||||
--------------
|
||||
|
||||
- Where to get the reseed file? Locally or from a reseed server? Probably a server, and we act as a proxy, but we need to examine advantages and disadvantages of each. Maybe both, server then a local fallback?
|
||||
- Do we need to geolocate and never fetch a reseed file for a user in a country which is already automatically in hidden mode? Probably yes. Might want to never make them reseed helpers anyway.
|
||||
- How to distribute the reseed file? If it comes from a server it will be signed by a key we already trust, that's fine, but if it comes from somewhere local we may want to use an interstitial
|
||||
|
||||
Components
|
||||
-----------------
|
||||
|
||||
- Browser Extension - This repo. We use it because we can to some extent assume that people using this extension are also using I2P and can thus provide a reseed from a local source if need be.
|
||||
- Javascript Import - Placed on web pages, a'la Snowflake and or Flashproxy. Shows a download link that says Download reseed file over WebRTC, uses a (random?) extension user.
|
||||
- Native Proxy - Runs locally, obviates the need to download the reseed in a browser by fetching it over WebRTC on behalf of the router. Will start out as a Bridge but eventually be incorporated into I2P if successful.
|
||||
1. Go version, using pion/webrtc
|
||||
2. Java version, using whatever that Guardian Project library is probably
|
||||
|
||||
Phase 1: Manual Mode
|
||||
=================
|
||||
|
||||
Components required
|
||||
-----------------------------
|
||||
|
||||
- Browser Extension
|
||||
- Javascript Import
|
||||
|
||||
|
||||
Phase 2: Bridged Prototype
|
||||
====================
|
||||
|
||||
- Native Proxy, Go Version
|
||||
|
||||
Phase 3: Router Incorporation
|
||||
======================
|
||||
|
||||
- Native Proxy, Java Version
|
||||
"
|
||||
"Torbrowser","Are there any plans to support the Torbrowser?
|
||||
"
|
||||
"Use pageAction to indicate Security Status of I2P Sites(TLS, etc)","https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction"
|
||||
"SSH in the Browser?","TODO"
|
||||
"Dat Support?","TODO"
|
||||
"Secure configuration of tunnels for RPC remotes","Eventually we'll have to have configuration for different RPC endpoints for I2PControl and Bittorrent, from there it's not a stretch to let remote clients be controlled over i2p tunnels as well, but in this case we need to make sure that we require the password to be changed from the default and possibly look into using encrypted leasesets here too."
|
||||
"Tidy up the settings and document where they come from and what they do","Now that this is getting more and cooler features, I need to go over what all the settings are, how they're configured, which ones are obsolete and which ones needs to be created to fully realize all the cool stuff this plugin can do. This should be done before I even introduce settings for the torrent RPC protocols which makes it another blocker for the next version."
|
||||
"Internationalize website","The plugin itself supports multiple languages, but the website does not. I should fix that up ASAP."
|
||||
"Plugin Tab: I2P-Bote","An I2P-Bote plugin tab is a good idea too, but a low priority since Bote isn't very active right now."
|
||||
"Style Guide","Develop a consistent style guide."
|
||||
"Cool idea: tab or window.privacy API","Design webextension experiment."
|
||||
"Uplifting 3: Letterboxing","I dunno what's up here. This setting is privacy.resistFingerprinting.letterboxing=true or something like that. If seems like the privacy.websites.resistFingerprinting API should enables privacy.resistFingerprinting."
|
||||
"Uplifting 2: audio stuff","Work with Mozilla to disable fingerprintable audio API's when privacy.resistFingerprinting=true."
|
||||
"Uplifting 1: webgl","Work with Mozilla to finish webgl requirements for resistFingerprinting."
|
||||
"FoxyProxy Compatibility?","This extension currently *Breaks the expected behavior of FoxyProxy* by enforcing it's rules over those described by FoxyProxy. This one might be more trouble than it's worth, in fact I think it probably is, but if it isn't, this is a nice-to-have for some of the longtime Foxy users to ease their transition. "
|
||||
"Android","Somewhere in the past few releases I broke Android, probably while I was making the window-management less irritating. Find+fix."
|
||||
"Whonix","I2P integration in Whonix is running into the problem of making the router console available(Which requires either a proxy exception or an extra proxy like Privoxy) without making the whole localhost available. Since that's a problem this can solve, after I deal with the linting stuff I need to get back in touch with them. Right now I'm also (ab)using include-binaries, I'll need to resolve that too."
|
||||
"Update channel for non-AMO Webextension","TODO:"
|
|
BIN
lander.png
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 97 KiB |
36
location.html
Normal file
@@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<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">-->
|
||||
|
||||
<title>
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="browserpanel">
|
||||
<div class="panel">
|
||||
<div class="section-header panel-section panel-section-header" id="headline">
|
||||
<div class="text-section-header" id="text-section-header">
|
||||
<h1 id="text-section-header">This site offers an anonymous mirror on I2P</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<ul>
|
||||
<li>
|
||||
<div class="address-info">
|
||||
<span id="TypeLabel">Alternate Addresses:</span> <span id="Type"></span>
|
||||
<div id="TypeInfo">
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<script src="location.js"></script>
|
||||
</body>
|
||||
</html>
|
19
location.js
Normal file
@@ -0,0 +1,19 @@
|
||||
function gotCurrent(tab) {
|
||||
function gotTitle(title) {
|
||||
let addr = title;
|
||||
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
|
||||
});
|
||||
gettingTitle.then(gotTitle);
|
||||
}
|
||||
|
||||
function tabError(error) {
|
||||
console.log(`Error : ${error}`);
|
||||
}
|
||||
|
||||
const gettingCurrent = browser.tabs.query({ active: true });
|
||||
gettingCurrent.then(gotCurrent, tabError);
|
@@ -2,8 +2,7 @@
|
||||
"applications": {
|
||||
"gecko": {
|
||||
"id": "i2ppb@eyedeekay.github.io",
|
||||
"update_url": "https://c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p/i2p/updateManifest.json",
|
||||
"strict_min_version": "60.0"
|
||||
"strict_min_version": "85.0"
|
||||
}
|
||||
},
|
||||
"permissions": [
|
||||
@@ -17,6 +16,7 @@
|
||||
"proxy",
|
||||
"privacy",
|
||||
"storage",
|
||||
"webNavigation",
|
||||
"webRequest",
|
||||
"webRequestBlocking",
|
||||
"contextualIdentities",
|
||||
@@ -27,22 +27,21 @@
|
||||
],
|
||||
"manifest_version": 2,
|
||||
"name": "__MSG_extensionName__",
|
||||
"version": "0.66",
|
||||
"version_name": "0.66",
|
||||
"version": "0.113",
|
||||
"description": "__MSG_extensionDescription__",
|
||||
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
|
||||
"icons": {
|
||||
"48": "icons/toopie.png"
|
||||
"48": "icons/i2plogo.png"
|
||||
},
|
||||
"browser_action": {
|
||||
"browser_style": true,
|
||||
"default_icon": "icons/toopie.png",
|
||||
"default_icon": "icons/i2plogo.png",
|
||||
"default_title": "__MSG_extensionName__",
|
||||
"default_popup": "window.html"
|
||||
},
|
||||
"sidebar_action": {
|
||||
"browser_style": true,
|
||||
"default_icon": "icons/logo.png",
|
||||
"default_icon": "icons/i2plogo.png",
|
||||
"default_title": "__MSG_toopieName__",
|
||||
"default_panel": "toopie.html",
|
||||
"open_at_install": false
|
||||
@@ -50,19 +49,24 @@
|
||||
"page_action": {
|
||||
"browser_style": true,
|
||||
"default_title": "__MSG_toopieTLS__",
|
||||
"default_icon": "icons/toopie.png",
|
||||
"default_icon": "icons/i2plogo.png",
|
||||
"show_matches": [
|
||||
"http://*.i2p/*",
|
||||
"https://*.i2p/*",
|
||||
"http://*.b32.i2p/*",
|
||||
"https://*.b32.i2p/*"
|
||||
],
|
||||
"default_panel": "security.html",
|
||||
"pinned": true
|
||||
},
|
||||
"options_ui": {
|
||||
"page": "options/options.html"
|
||||
},
|
||||
"content_scripts": [
|
||||
{
|
||||
"matches": ["<all_urls>"],
|
||||
"js": ["script.js"]
|
||||
}
|
||||
],
|
||||
"background": {
|
||||
"persistent": true,
|
||||
"scripts": [
|
||||
|
BIN
menu.png
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 300 KiB |
@@ -1,5 +1,4 @@
|
||||
body {
|
||||
width: 25em;
|
||||
font-family: "Open Sans Light",sans-serif;
|
||||
font-size: 0.9em;
|
||||
font-weight: 300
|
||||
@@ -14,7 +13,7 @@ section.scheme-options {
|
||||
#clear-button,
|
||||
section.scheme-options input,
|
||||
section.scheme-options>select {
|
||||
float: right
|
||||
|
||||
}
|
||||
label {
|
||||
display: block;
|
||||
@@ -25,27 +24,29 @@ label:hover {
|
||||
}
|
||||
.title {
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 0.5em
|
||||
margin-bottom: 0.5em;
|
||||
width: 100%
|
||||
}
|
||||
body,
|
||||
html {
|
||||
width: 350px
|
||||
width: 100%
|
||||
}
|
||||
a {
|
||||
margin: 10px;
|
||||
display: inline-block
|
||||
margin: 10px
|
||||
}
|
||||
.panel {
|
||||
margin: 5px
|
||||
}
|
||||
span.identity {
|
||||
width: 100px;
|
||||
display: inline-block;
|
||||
margin-left: 1em
|
||||
}
|
||||
.identity-options {
|
||||
display: none
|
||||
}
|
||||
input {
|
||||
display: inline
|
||||
|
||||
}
|
||||
div {
|
||||
width: 100%!important
|
||||
}
|
@@ -19,11 +19,17 @@
|
||||
</select>
|
||||
</section>
|
||||
|
||||
<section class="scheme-options">
|
||||
<span class="title">Bookmarks Status:</span>
|
||||
<input type="checkbox" id="bookmarksState" name="bookmarksstate" value="bookmarksstate">
|
||||
<label for="bookmarksState">Bookmarks were created at install-time.</tv>
|
||||
<button type="submit" id="bookmarksButton">Re-Create Bookmarks</button>
|
||||
</section>
|
||||
|
||||
<section class="scheme-options proxy-options" id="proxy-options">
|
||||
<div class="title">
|
||||
Proxy Options
|
||||
</div>
|
||||
|
||||
<p id="proxyHelpText">
|
||||
</p>
|
||||
<label id="portText">Host:</label> <input data="host" id="host" type="text" value="127.0.0.1">
|
||||
@@ -83,7 +89,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>
|
||||
|
@@ -1,151 +1,171 @@
|
||||
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");
|
||||
var hostid = document.getElementById('hostText');
|
||||
hostid.textContent = chrome.i18n.getMessage('hostText');
|
||||
}
|
||||
|
||||
function SetPortText() {
|
||||
var portid = document.getElementById("portText");
|
||||
portid.textContent = chrome.i18n.getMessage("portText");
|
||||
var portid = document.getElementById('portText');
|
||||
portid.textContent = chrome.i18n.getMessage('portText');
|
||||
}
|
||||
|
||||
function SetPortHelpText() {
|
||||
var portid = document.getElementById("proxyHelpText");
|
||||
portid.textContent = chrome.i18n.getMessage("proxyHelpText");
|
||||
var portid = document.getElementById('proxyHelpText');
|
||||
portid.textContent = chrome.i18n.getMessage('proxyHelpText');
|
||||
}
|
||||
|
||||
function SetControlHostText() {
|
||||
var controlhostid = document.getElementById("controlHostText");
|
||||
controlhostid.textContent = chrome.i18n.getMessage("controlHostText");
|
||||
var controlhostid = document.getElementById('controlHostText');
|
||||
controlhostid.textContent = chrome.i18n.getMessage('controlHostText');
|
||||
}
|
||||
|
||||
function SetControlPortText() {
|
||||
var controlportid = document.getElementById("controlPortText");
|
||||
controlportid.textContent = chrome.i18n.getMessage("controlPortText");
|
||||
var controlportid = document.getElementById('controlPortText');
|
||||
controlportid.textContent = chrome.i18n.getMessage('controlPortText');
|
||||
}
|
||||
|
||||
function SetControlHelpText() {
|
||||
var portid = document.getElementById("controlHelpText");
|
||||
portid.textContent = chrome.i18n.getMessage("controlHelpText");
|
||||
var portid = document.getElementById('controlHelpText');
|
||||
portid.textContent = chrome.i18n.getMessage('controlHelpText');
|
||||
}
|
||||
|
||||
function getBookmarksCreated() {
|
||||
bookmarks_state = document.getElementById('bookmarks');
|
||||
console.log('(options)Got i2p bookmarks state:', bookmarks_state);
|
||||
if (bookmarks_state == undefined) {
|
||||
return false;
|
||||
}
|
||||
if (bookmarks_state.value == 'false') {
|
||||
return false;
|
||||
}
|
||||
if (bookmarks_state.value == 'true') {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function getScheme() {
|
||||
const proxy_scheme = document.querySelector("#proxy_scheme");
|
||||
console.log("(options)Got i2p proxy scheme:", proxy_scheme.value);
|
||||
if (proxy_scheme.value == "HTTP") {
|
||||
return "http";
|
||||
const proxy_scheme = document.querySelector('#proxy_scheme');
|
||||
console.log('(options)Got i2p proxy scheme:', proxy_scheme.value);
|
||||
if (proxy_scheme.value == 'HTTP') {
|
||||
return 'http';
|
||||
}
|
||||
if (proxy_scheme.value == "SOCKS") {
|
||||
return "socks";
|
||||
if (proxy_scheme.value == 'SOCKS') {
|
||||
return 'socks';
|
||||
}
|
||||
if (proxy_scheme.value == "http") return "http";
|
||||
if (proxy_scheme.value == "socks") return "socks";
|
||||
else return "http";
|
||||
if (proxy_scheme.value == 'http') return 'http';
|
||||
if (proxy_scheme.value == 'socks') return 'socks';
|
||||
else return 'http';
|
||||
}
|
||||
|
||||
function getHost() {
|
||||
proxy_host = document.getElementById("host").value;
|
||||
console.log("(options)Got i2p proxy host:", proxy_host);
|
||||
proxy_host = document.getElementById('host').value;
|
||||
console.log('(options)Got i2p proxy host:', proxy_host);
|
||||
if (proxy_host == undefined) {
|
||||
return "127.0.0.1";
|
||||
return '127.0.0.1';
|
||||
}
|
||||
return proxy_host;
|
||||
}
|
||||
|
||||
function getPort() {
|
||||
proxy_port = document.getElementById("port").value;
|
||||
console.log("(options)Got i2p proxy port:", proxy_port);
|
||||
proxy_port = document.getElementById('port').value;
|
||||
console.log('(options)Got i2p proxy port:', proxy_port);
|
||||
if (proxy_port == undefined) {
|
||||
return "4444";
|
||||
return '4444';
|
||||
}
|
||||
return proxy_port;
|
||||
}
|
||||
|
||||
function getControlHost() {
|
||||
control_host = document.getElementById("controlhost").value;
|
||||
console.log("(options)Got i2p control host:", control_host);
|
||||
control_host = document.getElementById('controlhost').value;
|
||||
console.log('(options)Got i2p control host:', control_host);
|
||||
if (control_host == undefined) {
|
||||
return "127.0.0.1";
|
||||
return '127.0.0.1';
|
||||
}
|
||||
return control_host;
|
||||
}
|
||||
|
||||
function getControlPort() {
|
||||
control_port = document.getElementById("controlport").value;
|
||||
console.log("(options)Got i2p control port:", control_port);
|
||||
control_port = document.getElementById('controlport').value;
|
||||
console.log('(options)Got i2p control port:', control_port);
|
||||
if (control_port == undefined) {
|
||||
return "4444";
|
||||
return '4444';
|
||||
}
|
||||
return control_port;
|
||||
}
|
||||
|
||||
function getRPCHost() {
|
||||
rpc_host = document.getElementById("rpchost").value;
|
||||
console.log("(options)Got i2pcontrol rpc host:", rpc_host);
|
||||
rpc_host = document.getElementById('rpchost').value;
|
||||
console.log('(options)Got i2pcontrol rpc host:', rpc_host);
|
||||
if (rpc_host == undefined) {
|
||||
return "127.0.0.1";
|
||||
return '127.0.0.1';
|
||||
}
|
||||
return rpc_host;
|
||||
}
|
||||
|
||||
function getRPCPort() {
|
||||
rpc_port = document.getElementById("rpcport").value;
|
||||
console.log("(options)Got i2pcontrol rpc port:", rpc_port);
|
||||
rpc_port = document.getElementById('rpcport').value;
|
||||
console.log('(options)Got i2pcontrol rpc port:', rpc_port);
|
||||
if (rpc_port == undefined) {
|
||||
return "7657";
|
||||
return '7657';
|
||||
}
|
||||
return rpc_port;
|
||||
}
|
||||
|
||||
function getRPCPath() {
|
||||
rpc_path = document.getElementById("rpcpath").value;
|
||||
console.log("(options)Got i2pcontrol rpc path:", rpc_path);
|
||||
rpc_path = document.getElementById('rpcpath').value;
|
||||
console.log('(options)Got i2pcontrol rpc path:', rpc_path);
|
||||
if (rpc_path == undefined) {
|
||||
return "jsonrpc";
|
||||
return 'jsonrpc';
|
||||
}
|
||||
return rpc_path;
|
||||
}
|
||||
|
||||
function getRPCPass() {
|
||||
rpc_pass = document.getElementById("rpcpass").value;
|
||||
console.log("(options)Got i2pcontrol rpc password:");
|
||||
rpc_pass = document.getElementById('rpcpass').value;
|
||||
console.log('(options)Got i2pcontrol rpc password:');
|
||||
if (rpc_pass == undefined) {
|
||||
return "itoopie";
|
||||
return 'itoopie';
|
||||
}
|
||||
return rpc_pass;
|
||||
}
|
||||
|
||||
function getBTRPCHost() {
|
||||
bt_rpc_host = document.getElementById("btrpchost").value;
|
||||
console.log("(options)Got torrent rpc host:", bt_rpc_host);
|
||||
bt_rpc_host = document.getElementById('btrpchost').value;
|
||||
console.log('(options)Got torrent rpc host:', bt_rpc_host);
|
||||
if (bt_rpc_host == undefined) {
|
||||
return "127.0.0.1";
|
||||
return '127.0.0.1';
|
||||
}
|
||||
return bt_rpc_host;
|
||||
}
|
||||
|
||||
function getBTRPCPort() {
|
||||
bt_rpc_port = document.getElementById("btrpcport").value;
|
||||
console.log("(options)Got torrent rpc port:", bt_rpc_port);
|
||||
bt_rpc_port = document.getElementById('btrpcport').value;
|
||||
console.log('(options)Got torrent rpc port:', bt_rpc_port);
|
||||
if (bt_rpc_port == undefined) {
|
||||
return "7657";
|
||||
return '7657';
|
||||
}
|
||||
return bt_rpc_port;
|
||||
}
|
||||
|
||||
function getBTRPCPath() {
|
||||
bt_rpc_path = document.getElementById("btrpcpath").value;
|
||||
console.log("(options)Got torrent rpc path:", bt_rpc_path);
|
||||
bt_rpc_path = document.getElementById('btrpcpath').value;
|
||||
console.log('(options)Got torrent rpc path:', bt_rpc_path);
|
||||
if (bt_rpc_path == undefined) {
|
||||
return "transmission/rpc";
|
||||
return 'transmission/rpc';
|
||||
}
|
||||
return bt_rpc_path;
|
||||
}
|
||||
|
||||
function getBTRPCPass() {
|
||||
bt_rpc_pass = document.getElementById("btrpcpass").value;
|
||||
console.log("(options)Got torrent rpc password:");
|
||||
bt_rpc_pass = document.getElementById('btrpcpass').value;
|
||||
console.log('(options)Got torrent rpc password:');
|
||||
if (bt_rpc_pass == undefined) {
|
||||
return "itoopie";
|
||||
return 'itoopie';
|
||||
}
|
||||
return bt_rpc_pass;
|
||||
}
|
||||
@@ -153,85 +173,88 @@ function getBTRPCPass() {
|
||||
function checkStoredSettings(storedSettings) {
|
||||
function gotProxyInfo(info) {
|
||||
let defaultSettings = {};
|
||||
let host = info.value.http.split(":")[0];
|
||||
let port = info.value.http.split(":")[1];
|
||||
let host = info.value.http.split(':')[0];
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port != 7644) {
|
||||
port = undefined;
|
||||
}
|
||||
console.log("(options)proxy", "'" + host + "'", ":", port);
|
||||
if (!storedSettings["proxy_scheme"])
|
||||
defaultSettings["proxy_scheme"] = "http";
|
||||
else defaultSettings["proxy_scheme"] = storedSettings["proxy_scheme"];
|
||||
if (!storedSettings["proxy_host"]) {
|
||||
if (host == "") defaultSettings["proxy_host"] = "127.0.0.1";
|
||||
else defaultSettings["proxy_host"] = host;
|
||||
} else defaultSettings["proxy_host"] = storedSettings["proxy_host"];
|
||||
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'];
|
||||
if (!storedSettings['proxy_host']) {
|
||||
if (host == '') defaultSettings['proxy_host'] = '127.0.0.1';
|
||||
else defaultSettings['proxy_host'] = host;
|
||||
} else defaultSettings['proxy_host'] = storedSettings['proxy_host'];
|
||||
|
||||
if (!storedSettings["proxy_port"]) {
|
||||
if (port == undefined) defaultSettings["proxy_port"] = 4444;
|
||||
else if (port == 7644) defaultSettings["proxy_port"] = port;
|
||||
else defaultSettings["proxy_port"] = 4444;
|
||||
} else defaultSettings["proxy_port"] = storedSettings.proxy_port;
|
||||
if (!storedSettings['proxy_port']) {
|
||||
if (port == undefined) defaultSettings['proxy_port'] = 4444;
|
||||
else if (port == 7644) defaultSettings['proxy_port'] = port;
|
||||
else defaultSettings['proxy_port'] = 4444;
|
||||
} else defaultSettings['proxy_port'] = storedSettings.proxy_port;
|
||||
|
||||
if (!storedSettings["control_host"]) {
|
||||
if (host == "") defaultSettings["control_host"] = "127.0.0.1";
|
||||
else defaultSettings["control_host"] = host;
|
||||
} else defaultSettings["control_host"] = storedSettings.control_host;
|
||||
if (!storedSettings['control_host']) {
|
||||
if (host == '') defaultSettings['control_host'] = '127.0.0.1';
|
||||
else defaultSettings['control_host'] = host;
|
||||
} else defaultSettings['control_host'] = storedSettings.control_host;
|
||||
|
||||
if (!storedSettings["control_port"]) {
|
||||
defaultSettings["control_port"] = 7657;
|
||||
} else defaultSettings["control_port"] = storedSettings.control_port;
|
||||
if (!storedSettings['control_port']) {
|
||||
defaultSettings['control_port'] = 7657;
|
||||
} else defaultSettings['control_port'] = storedSettings.control_port;
|
||||
|
||||
if (!storedSettings["rpc_host"]) {
|
||||
if (host == "") defaultSettings["rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["rpc_host"] = host;
|
||||
} else defaultSettings["rpc_host"] = storedSettings.rpc_host;
|
||||
if (!storedSettings['rpc_host']) {
|
||||
if (host == '') defaultSettings['rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['rpc_host'] = host;
|
||||
} else defaultSettings['rpc_host'] = storedSettings.rpc_host;
|
||||
|
||||
if (!storedSettings["rpc_port"]) {
|
||||
defaultSettings["rpc_port"] = 7657;
|
||||
} else defaultSettings["rpc_port"] = storedSettings.rpc_port;
|
||||
if (!storedSettings['rpc_port']) {
|
||||
defaultSettings['rpc_port'] = 7657;
|
||||
} else defaultSettings['rpc_port'] = storedSettings.rpc_port;
|
||||
|
||||
if (!storedSettings["rpc_path"]) {
|
||||
defaultSettings["rpc_path"] = "jsonrpc";
|
||||
} else defaultSettings["rpc_path"] = storedSettings.rpc_path;
|
||||
if (!storedSettings['rpc_path']) {
|
||||
defaultSettings['rpc_path'] = 'jsonrpc';
|
||||
} else defaultSettings['rpc_path'] = storedSettings.rpc_path;
|
||||
|
||||
if (!storedSettings["rpc_pass"]) {
|
||||
defaultSettings["rpc_pass"] = "itoopie";
|
||||
} else defaultSettings["rpc_pass"] = storedSettings.rpc_pass;
|
||||
if (!storedSettings['rpc_pass']) {
|
||||
defaultSettings['rpc_pass'] = 'itoopie';
|
||||
} else defaultSettings['rpc_pass'] = storedSettings.rpc_pass;
|
||||
|
||||
if (!storedSettings["bt_rpc_host"]) {
|
||||
if (host == "") defaultSettings["bt_rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["bt_rpc_host"] = host;
|
||||
} else defaultSettings["bt_rpc_host"] = storedSettings.bt_rpc_host;
|
||||
if (!storedSettings['bt_rpc_host']) {
|
||||
if (host == '') defaultSettings['bt_rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['bt_rpc_host'] = host;
|
||||
} else defaultSettings['bt_rpc_host'] = storedSettings.bt_rpc_host;
|
||||
|
||||
if (!storedSettings["bt_rpc_port"]) {
|
||||
defaultSettings["bt_rpc_port"] = 7657;
|
||||
} else defaultSettings["bt_rpc_port"] = storedSettings.bt_rpc_port;
|
||||
if (!storedSettings['bt_rpc_port']) {
|
||||
defaultSettings['bt_rpc_port'] = 7657;
|
||||
} else defaultSettings['bt_rpc_port'] = storedSettings.bt_rpc_port;
|
||||
|
||||
if (!storedSettings["bt_rpc_path"]) {
|
||||
defaultSettings["bt_rpc_path"] = "transmission/";
|
||||
} else defaultSettings["bt_rpc_path"] = storedSettings.bt_rpc_path;
|
||||
if (!storedSettings['bt_rpc_path']) {
|
||||
defaultSettings['bt_rpc_path'] = 'transmission/';
|
||||
} else defaultSettings['bt_rpc_path'] = storedSettings.bt_rpc_path;
|
||||
|
||||
if (!storedSettings["bt_rpc_pass"]) {
|
||||
defaultSettings["bt_rpc_pass"] = "transmission";
|
||||
} else defaultSettings["bt_rpc_pass"] = storedSettings.bt_rpc_pass;
|
||||
if (!storedSettings['bt_rpc_pass']) {
|
||||
defaultSettings['bt_rpc_pass'] = 'transmission';
|
||||
} else defaultSettings['bt_rpc_pass'] = storedSettings.bt_rpc_pass;
|
||||
|
||||
console.log("(options)(browserinfo) NATIVE PROXYSETTINGS", info.value);
|
||||
defaultSettings["base_url"] =
|
||||
"http://" +
|
||||
defaultSettings["bt_rpc_host"] +
|
||||
":" +
|
||||
defaultSettings["bt_rpc_port"] +
|
||||
"/" +
|
||||
defaultSettings["bt_rpc_path"];
|
||||
console.log('(options)(browserinfo) NATIVE PROXYSETTINGS', info.value);
|
||||
defaultSettings['base_url'] =
|
||||
'http://' +
|
||||
defaultSettings['bt_rpc_host'] +
|
||||
':' +
|
||||
defaultSettings['bt_rpc_port'] +
|
||||
'/' +
|
||||
defaultSettings['bt_rpc_path'];
|
||||
console.log(
|
||||
"(options)",
|
||||
defaultSettings["proxy_scheme"],
|
||||
defaultSettings["proxy_host"],
|
||||
defaultSettings["proxy_port"],
|
||||
defaultSettings["control_host"],
|
||||
defaultSettings["control_port"],
|
||||
defaultSettings["base_url"]
|
||||
'(options)',
|
||||
defaultSettings['proxy_scheme'],
|
||||
defaultSettings['proxy_host'],
|
||||
defaultSettings['proxy_port'],
|
||||
defaultSettings['control_host'],
|
||||
defaultSettings['control_port'],
|
||||
defaultSettings['base_url']
|
||||
);
|
||||
|
||||
chrome.storage.local.set(defaultSettings);
|
||||
@@ -243,72 +266,75 @@ function checkStoredSettings(storedSettings) {
|
||||
|
||||
function checkAndroidStoredSettings(storedSettings) {
|
||||
let defaultSettings = {};
|
||||
let host = "";
|
||||
let port = "";
|
||||
if (!storedSettings["proxy_scheme"]) defaultSettings["proxy_scheme"] = "http";
|
||||
else defaultSettings["proxy_scheme"] = storedSettings["proxy_scheme"];
|
||||
if (!storedSettings["proxy_host"]) {
|
||||
if (host == "") defaultSettings["proxy_host"] = "127.0.0.1";
|
||||
else defaultSettings["proxy_host"] = host;
|
||||
} else defaultSettings["proxy_host"] = storedSettings["proxy_host"];
|
||||
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']) {
|
||||
if (host == '') defaultSettings['proxy_host'] = '127.0.0.1';
|
||||
else defaultSettings['proxy_host'] = host;
|
||||
} else defaultSettings['proxy_host'] = storedSettings['proxy_host'];
|
||||
|
||||
if (!storedSettings["proxy_port"]) {
|
||||
if (port == undefined) defaultSettings["proxy_port"] = 4444;
|
||||
else if (port == 7644) defaultSettings["proxy_port"] = port;
|
||||
else defaultSettings["proxy_port"] = 4444;
|
||||
} else defaultSettings["proxy_port"] = storedSettings.proxy_port;
|
||||
if (!storedSettings['proxy_port']) {
|
||||
if (port == undefined) defaultSettings['proxy_port'] = 4444;
|
||||
else if (port == 7644) defaultSettings['proxy_port'] = port;
|
||||
else defaultSettings['proxy_port'] = 4444;
|
||||
} else defaultSettings['proxy_port'] = storedSettings.proxy_port;
|
||||
|
||||
if (!storedSettings["control_host"]) {
|
||||
if (host == "") defaultSettings["control_host"] = "127.0.0.1";
|
||||
else defaultSettings["control_host"] = host;
|
||||
} else defaultSettings["control_host"] = storedSettings.control_host;
|
||||
if (!storedSettings['control_host']) {
|
||||
if (host == '') defaultSettings['control_host'] = '127.0.0.1';
|
||||
else defaultSettings['control_host'] = host;
|
||||
} else defaultSettings['control_host'] = storedSettings.control_host;
|
||||
|
||||
if (!storedSettings["control_port"]) {
|
||||
defaultSettings["control_port"] = 7657;
|
||||
} else defaultSettings["control_port"] = storedSettings.control_port;
|
||||
if (!storedSettings['control_port']) {
|
||||
defaultSettings['control_port'] = 7657;
|
||||
} else defaultSettings['control_port'] = storedSettings.control_port;
|
||||
|
||||
if (!storedSettings["rpc_host"]) {
|
||||
if (host == "") defaultSettings["rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["rpc_host"] = host;
|
||||
} else defaultSettings["rpc_host"] = storedSettings.rpc_host;
|
||||
if (!storedSettings['rpc_host']) {
|
||||
if (host == '') defaultSettings['rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['rpc_host'] = host;
|
||||
} else defaultSettings['rpc_host'] = storedSettings.rpc_host;
|
||||
|
||||
if (!storedSettings["rpc_port"]) {
|
||||
defaultSettings["rpc_port"] = 7657;
|
||||
} else defaultSettings["rpc_port"] = storedSettings.rpc_port;
|
||||
if (!storedSettings['rpc_port']) {
|
||||
defaultSettings['rpc_port'] = 7657;
|
||||
} else defaultSettings['rpc_port'] = storedSettings.rpc_port;
|
||||
|
||||
if (!storedSettings["rpc_path"]) {
|
||||
defaultSettings["rpc_path"] = "jsonrpc";
|
||||
} else defaultSettings["rpc_path"] = storedSettings.rpc_path;
|
||||
if (!storedSettings['rpc_path']) {
|
||||
defaultSettings['rpc_path'] = 'jsonrpc';
|
||||
} else defaultSettings['rpc_path'] = storedSettings.rpc_path;
|
||||
|
||||
if (!storedSettings["rpc_pass"]) {
|
||||
defaultSettings["rpc_pass"] = "itoopie";
|
||||
} else defaultSettings["rpc_pass"] = storedSettings.rpc_pass;
|
||||
if (!storedSettings['rpc_pass']) {
|
||||
defaultSettings['rpc_pass'] = 'itoopie';
|
||||
} else defaultSettings['rpc_pass'] = storedSettings.rpc_pass;
|
||||
|
||||
if (!storedSettings["bt_rpc_host"]) {
|
||||
if (host == "") defaultSettings["bt_rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["bt_rpc_host"] = host;
|
||||
} else defaultSettings["bt_rpc_host"] = storedSettings.bt_rpc_host;
|
||||
if (!storedSettings['bt_rpc_host']) {
|
||||
if (host == '') defaultSettings['bt_rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['bt_rpc_host'] = host;
|
||||
} else defaultSettings['bt_rpc_host'] = storedSettings.bt_rpc_host;
|
||||
|
||||
if (!storedSettings["bt_rpc_port"]) {
|
||||
defaultSettings["bt_rpc_port"] = 7657;
|
||||
} else defaultSettings["bt_rpc_port"] = storedSettings.bt_rpc_port;
|
||||
if (!storedSettings['bt_rpc_port']) {
|
||||
defaultSettings['bt_rpc_port'] = 7657;
|
||||
} else defaultSettings['bt_rpc_port'] = storedSettings.bt_rpc_port;
|
||||
|
||||
if (!storedSettings["bt_rpc_path"]) {
|
||||
defaultSettings["bt_rpc_path"] = "transmission/rpc";
|
||||
} else defaultSettings["bt_rpc_path"] = storedSettings.bt_rpc_path;
|
||||
if (!storedSettings['bt_rpc_path']) {
|
||||
defaultSettings['bt_rpc_path'] = 'transmission/rpc';
|
||||
} else defaultSettings['bt_rpc_path'] = storedSettings.bt_rpc_path;
|
||||
|
||||
if (!storedSettings["bt_rpc_pass"]) {
|
||||
defaultSettings["bt_rpc_pass"] = "transmission";
|
||||
} else defaultSettings["bt_rpc_pass"] = storedSettings.bt_rpc_pass;
|
||||
if (!storedSettings['bt_rpc_pass']) {
|
||||
defaultSettings['bt_rpc_pass'] = 'transmission';
|
||||
} else defaultSettings['bt_rpc_pass'] = storedSettings.bt_rpc_pass;
|
||||
|
||||
console.log("(options)(browserinfo) NATIVE PROXYSETTINGS", info.value);
|
||||
console.log('(options)(browserinfo) NATIVE PROXYSETTINGS', info.value);
|
||||
console.log(
|
||||
"(options)",
|
||||
defaultSettings["proxy_scheme"],
|
||||
defaultSettings["proxy_host"],
|
||||
defaultSettings["proxy_port"],
|
||||
defaultSettings["control_host"],
|
||||
defaultSettings["control_port"]
|
||||
'(options)',
|
||||
defaultSettings['proxy_scheme'],
|
||||
defaultSettings['proxy_host'],
|
||||
defaultSettings['proxy_port'],
|
||||
defaultSettings['control_host'],
|
||||
defaultSettings['control_port']
|
||||
);
|
||||
chrome.storage.local.set(defaultSettings);
|
||||
return defaultSettings;
|
||||
@@ -319,85 +345,91 @@ function onError(e) {
|
||||
}
|
||||
|
||||
function storeSettings() {
|
||||
let storableSettings = {}
|
||||
storableSettings["proxy_scheme"] = getScheme();
|
||||
storableSettings["proxy_host"] = getHost();
|
||||
storableSettings["proxy_port"] = getPort();
|
||||
storableSettings["control_host"] = getControlHost();
|
||||
storableSettings["control_port"] = getControlPort();
|
||||
storableSettings["rpc_host"] = getRPCHost();
|
||||
storableSettings["rpc_port"] = getRPCPort();
|
||||
storableSettings["rpc_path"] = getRPCPath();
|
||||
storableSettings["rpc_pass"] = getRPCPass();
|
||||
storableSettings["bt_rpc_host"] = getBTRPCHost();
|
||||
storableSettings["bt_rpc_port"] = getBTRPCPort();
|
||||
storableSettings["bt_rpc_path"] = getBTRPCPath();
|
||||
storableSettings["bt_rpc_pass"] = getBTRPCPass();
|
||||
storableSettings["base_url"] =
|
||||
"http://" + bt_rpc_host + ":" + bt_rpc_port + "/" + bt_rpc_path;
|
||||
console.log("storing", storableSettings);
|
||||
let storableSettings = {};
|
||||
storableSettings['bookmarks_state'] = getBookmarksCreated();
|
||||
storableSettings['proxy_scheme'] = getScheme();
|
||||
storableSettings['proxy_host'] = getHost();
|
||||
storableSettings['proxy_port'] = getPort();
|
||||
storableSettings['control_host'] = getControlHost();
|
||||
storableSettings['control_port'] = getControlPort();
|
||||
storableSettings['rpc_host'] = getRPCHost();
|
||||
storableSettings['rpc_port'] = getRPCPort();
|
||||
storableSettings['rpc_path'] = getRPCPath();
|
||||
storableSettings['rpc_pass'] = getRPCPass();
|
||||
storableSettings['bt_rpc_host'] = getBTRPCHost();
|
||||
storableSettings['bt_rpc_port'] = getBTRPCPort();
|
||||
storableSettings['bt_rpc_path'] = getBTRPCPath();
|
||||
storableSettings['bt_rpc_pass'] = getBTRPCPass();
|
||||
storableSettings['base_url'] =
|
||||
'http://' + bt_rpc_host + ':' + bt_rpc_port + '/' + bt_rpc_path;
|
||||
console.log('storing', storableSettings);
|
||||
chrome.storage.local.set(storableSettings);
|
||||
}
|
||||
|
||||
function updateUI(restoredSettings) {
|
||||
const selectList = document.querySelector("#proxy_scheme");
|
||||
if (selectList == undefined) selectList.value = restoredSettings.proxy_scheme;
|
||||
const selectList = document.querySelector('#proxy_scheme');
|
||||
if (selectList != undefined) selectList.value = restoredSettings.proxy_scheme;
|
||||
//console.log("(options)showing proxy scheme:", selectList.value);
|
||||
|
||||
const hostitem = document.getElementById("host");
|
||||
if (hostitem == undefined) hostitem.value = restoredSettings.proxy_host;
|
||||
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;
|
||||
//console.log("(options)showing proxy host:", hostitem.value);
|
||||
|
||||
const portitem = document.getElementById("port");
|
||||
if (portitem == undefined) portitem.value = restoredSettings.proxy_port;
|
||||
const portitem = document.getElementById('port');
|
||||
if (portitem != undefined) portitem.value = restoredSettings.proxy_port;
|
||||
//console.log("(options)showing proxy port:", portitem.value);
|
||||
|
||||
const controlhostitem = document.getElementById("controlhost");
|
||||
const controlhostitem = document.getElementById('controlhost');
|
||||
if (controlhostitem == undefined)
|
||||
controlhostitem.value = restoredSettings.control_host;
|
||||
//console.log("(options)showing control host:", controlhostitem.value);
|
||||
|
||||
const controlportitem = document.getElementById("controlport");
|
||||
const controlportitem = document.getElementById('controlport');
|
||||
if (controlportitem == undefined)
|
||||
controlportitem.value = restoredSettings.control_port;
|
||||
//console.log("(options)showing control port:", controlportitem.value);
|
||||
|
||||
const rpchostitem = document.getElementById("rpchost");
|
||||
if (rpchostitem == undefined) rpchostitem.value = restoredSettings.rpc_host;
|
||||
const rpchostitem = document.getElementById('rpchost');
|
||||
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;
|
||||
const rpcportitem = document.getElementById('rpcport');
|
||||
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;
|
||||
const rpcpathitem = document.getElementById('rpcpath');
|
||||
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;
|
||||
const rpcpassitem = document.getElementById('rpcpass');
|
||||
if (rpcpassitem != undefined) rpcpassitem.value = restoredSettings.rpc_pass;
|
||||
//console.log("(options)showing rpc pass:");
|
||||
|
||||
const btrpchostitem = document.getElementById("btrpchost");
|
||||
if (btrpchostitem == undefined)
|
||||
btrpchostitem.value = restoredSettings.rpc_host;
|
||||
const btrpchostitem = document.getElementById('btrpchost');
|
||||
if (btrpchostitem != undefined)
|
||||
btrpchostitem.value = restoredSettings.bt_rpc_host;
|
||||
//console.log("(options)showing bt rpc host:", btrpchostitem.value);
|
||||
|
||||
const btrpcportitem = document.getElementById("btrpcport");
|
||||
if (btrpcportitem == undefined)
|
||||
btrpcportitem.value = restoredSettings.rpc_port;
|
||||
const btrpcportitem = document.getElementById('btrpcport');
|
||||
if (btrpcportitem != undefined)
|
||||
btrpcportitem.value = restoredSettings.bt_rpc_port;
|
||||
//console.log("(options)showing rbt pc port:", rpcportitem.value);
|
||||
|
||||
const btrpcpathitem = document.getElementById("btrpcpath");
|
||||
if (btrpcpathitem == undefined)
|
||||
btrpcpathitem.value = restoredSettings.rpc_path;
|
||||
const btrpcpathitem = document.getElementById('btrpcpath');
|
||||
if (btrpcpathitem != undefined)
|
||||
btrpcpathitem.value = restoredSettings.bt_rpc_path;
|
||||
//console.log("(options)showing bt rpc path:", btrpcpathitem.value);
|
||||
|
||||
const btrpcpassitem = document.getElementById("btrpcpass");
|
||||
if (btrpcpassitem == undefined)
|
||||
btrpcpassitem.value = restoredSettings.rpc_pass;
|
||||
const btrpcpassitem = document.getElementById('btrpcpass');
|
||||
if (btrpcpassitem != undefined)
|
||||
btrpcpassitem.value = restoredSettings.bt_rpc_pass;
|
||||
//console.log("(options)showing bt rpc pass:");
|
||||
|
||||
SetBookButton();
|
||||
SetHostText();
|
||||
SetPortText();
|
||||
SetPortHelpText();
|
||||
@@ -411,8 +443,8 @@ function onError(e) {
|
||||
}
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os != "android") {
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os != 'android') {
|
||||
chrome.storage.local.get(function(got) {
|
||||
let settings = checkStoredSettings(got);
|
||||
settings.then(updateUI);
|
||||
@@ -425,5 +457,5 @@ gettingInfo.then(got => {
|
||||
}
|
||||
});
|
||||
|
||||
const saveButton = document.querySelector("#save-button");
|
||||
saveButton.addEventListener("click", storeSettings);
|
||||
const saveButton = document.querySelector('#save-button');
|
||||
saveButton.addEventListener('click', storeSettings);
|
||||
|
10
platform.js
@@ -1,20 +1,20 @@
|
||||
var android = false;
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os == "android") {
|
||||
console.log("Running in Android detected");
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os == 'android') {
|
||||
console.log('Running in Android detected');
|
||||
android = true;
|
||||
return true;
|
||||
} else {
|
||||
console.log("Running in Desktop detected");
|
||||
console.log('Running in Desktop detected');
|
||||
android = false;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
function isDroid() {
|
||||
console.log("android?", android);
|
||||
console.log('android?', android);
|
||||
if (android == undefined) {
|
||||
return false;
|
||||
}
|
||||
|
223
privacy.js
@@ -1,10 +1,10 @@
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
var titlepref = chrome.i18n.getMessage('titlePreface');
|
||||
|
||||
function onSet(result) {
|
||||
if (result) {
|
||||
console.log("->: Value was updated");
|
||||
console.log('->: Value was updated');
|
||||
} else {
|
||||
console.log("-X: Value was not updated");
|
||||
console.log('-X: Value was not updated');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,16 @@ function disableHyperlinkAuditing() {
|
||||
var setting = browser.privacy.websites.hyperlinkAuditingEnabled.set({
|
||||
value: false
|
||||
});
|
||||
console.log("Disabling hyperlink auditing/val=", {
|
||||
console.log('Disabling hyperlink auditing/val=', {
|
||||
value: false
|
||||
});
|
||||
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);
|
||||
@@ -25,7 +34,16 @@ function enableFirstPartyIsolation() {
|
||||
var setting = browser.privacy.websites.firstPartyIsolate.set({
|
||||
value: true
|
||||
});
|
||||
console.log("Enabling first party isolation/val=", {
|
||||
console.log('Enabling first party isolation/val=', {
|
||||
value: true
|
||||
});
|
||||
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);
|
||||
@@ -36,16 +54,16 @@ function enableFirstPartyIsolation() {
|
||||
interface for now */
|
||||
function disableEvilCookies() {
|
||||
var getting = browser.privacy.websites.cookieConfig.get({});
|
||||
getting.then(got => {
|
||||
getting.then((got) => {
|
||||
var setting = browser.privacy.websites.cookieConfig.set({
|
||||
value: {
|
||||
behavior: "reject_third_party",
|
||||
behavior: 'reject_third_party',
|
||||
nonPersistentCookies: got.value.nonPersistentCookies
|
||||
}
|
||||
});
|
||||
console.log("Setting cookie behavior/val=", {
|
||||
console.log('Setting cookie behavior/val=', {
|
||||
value: {
|
||||
behavior: "reject_third_party",
|
||||
behavior: 'reject_third_party',
|
||||
nonPersistentCookies: got.value.nonPersistentCookies
|
||||
}
|
||||
});
|
||||
@@ -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({
|
||||
@@ -67,10 +89,19 @@ function disableEvilCookies() {
|
||||
// this disables the use of referrer headers
|
||||
function disableReferrers() {
|
||||
var setting = browser.privacy.websites.referrersEnabled.set({
|
||||
value: false
|
||||
value: false,
|
||||
});
|
||||
console.log("Disabling referrer headers/val=", {
|
||||
value: false
|
||||
value: false,
|
||||
});
|
||||
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);
|
||||
}
|
||||
@@ -78,10 +109,19 @@ function disableReferrers() {
|
||||
// enable fingerprinting resistent features(letterboxing and stuff)
|
||||
function enableResistFingerprinting() {
|
||||
var setting = browser.privacy.websites.resistFingerprinting.set({
|
||||
value: true
|
||||
value: true,
|
||||
});
|
||||
console.log("Enabling resist fingerprinting/val=", {
|
||||
value: true
|
||||
value: true,
|
||||
});
|
||||
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);
|
||||
}
|
||||
@@ -89,10 +129,19 @@ function enableResistFingerprinting() {
|
||||
// This is essentially a blocklist of clearnet web-sites known to do bad tracking
|
||||
function enableTrackingProtection() {
|
||||
var setting = browser.privacy.websites.trackingProtectionMode.set({
|
||||
value: "always"
|
||||
value: "always",
|
||||
});
|
||||
console.log("Enabling tracking protection/val=", {
|
||||
value: "always"
|
||||
value: "always",
|
||||
});
|
||||
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);
|
||||
}
|
||||
@@ -101,15 +150,15 @@ function enableTrackingProtection() {
|
||||
management dependent on identifying information */
|
||||
function disableDigitalRestrictionsManagement() {
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os == "win") {
|
||||
var setting = browser.privacy.websites.protectedContentEnabled.set({
|
||||
value: false
|
||||
value: false,
|
||||
});
|
||||
console.log(
|
||||
"Setting Protected Content(Digital Restrictions Management) false/val=",
|
||||
{
|
||||
value: false
|
||||
value: false,
|
||||
}
|
||||
);
|
||||
setting.then(onSet);
|
||||
@@ -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();
|
||||
@@ -131,16 +219,16 @@ setAllPrivacy();
|
||||
|
||||
function ResetPeerConnection() {
|
||||
function reset(snowflake) {
|
||||
var webrtc = false;
|
||||
var webrtc = true;
|
||||
console.log("No snowflake plugin found, pre-disabled WebRTC");
|
||||
var rtc = browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: webrtc
|
||||
value: webrtc,
|
||||
});
|
||||
rtc.then(AssurePeerConnection);
|
||||
}
|
||||
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,25 +236,27 @@ 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: webrtc.value
|
||||
});
|
||||
browser.privacy.network.networkPredictionEnabled.set({
|
||||
value: false
|
||||
value: true,
|
||||
});
|
||||
chrome.privacy.network.webRTCIPHandlingPolicy.set({
|
||||
value: "proxy_only"
|
||||
value: "disable_non_proxied_udp",
|
||||
});
|
||||
}
|
||||
let rtc = browser.privacy.network.peerConnectionEnabled.get({});
|
||||
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({});
|
||||
@@ -174,7 +264,7 @@ function AssurePeerConnection() {
|
||||
}
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os == "android") {
|
||||
browser.tabs.onCreated.addListener(ResetPeerConnection);
|
||||
} else {
|
||||
@@ -185,15 +275,13 @@ gettingInfo.then(got => {
|
||||
|
||||
function ResetDisableSavePasswords() {
|
||||
browser.privacy.services.passwordSavingEnabled.set({
|
||||
value: false
|
||||
value: false,
|
||||
});
|
||||
console.log("Re-disabled saved passwords");
|
||||
}
|
||||
|
||||
function EnableSavePasswords() {
|
||||
browser.privacy.services.passwordSavingEnabled.set({
|
||||
value: true
|
||||
});
|
||||
browser.privacy.services.passwordSavingEnabled.clear();
|
||||
console.log("Enabled saved passwords");
|
||||
}
|
||||
|
||||
@@ -201,7 +289,7 @@ function EnableSavePasswords() {
|
||||
|
||||
var defaultSettings = {
|
||||
since: "forever",
|
||||
dataTypes: ["downloads", "passwords", "formData", "localStorage", "history"]
|
||||
dataTypes: ["downloads", "passwords", "formData", "localStorage", "history"],
|
||||
};
|
||||
|
||||
function onError(therror) {
|
||||
@@ -217,7 +305,7 @@ function forgetBrowsingData(storedSettings) {
|
||||
const times = {
|
||||
hour: () => 1000 * 60 * 60,
|
||||
day: () => 1000 * 60 * 60 * 24,
|
||||
week: () => 1000 * 60 * 60 * 24 * 7
|
||||
week: () => 1000 * 60 * 60 * 24 * 7,
|
||||
};
|
||||
|
||||
const sinceMilliseconds = times[selectedSince].call();
|
||||
@@ -241,7 +329,7 @@ function forgetBrowsingData(storedSettings) {
|
||||
browser.notifications.create({
|
||||
type: "basic",
|
||||
title: "Removed browsing data",
|
||||
message: `Removed ${dataTypesString}\n for I2P Browsing`
|
||||
message: `Removed ${dataTypesString}\n for I2P Browsing`,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -250,41 +338,41 @@ function forgetBrowsingData(storedSettings) {
|
||||
for (let item of historyItems) {
|
||||
if (i2pHost(item.url)) {
|
||||
browser.history.deleteUrl({
|
||||
url: item.url
|
||||
url: item.url,
|
||||
});
|
||||
browser.browsingData.removeCache({});
|
||||
console.log("cleared Cache");
|
||||
browser.browsingData
|
||||
.removePasswords({
|
||||
hostnames: [i2pHostName(item.url)],
|
||||
since
|
||||
since,
|
||||
})
|
||||
.then(onContextGotLog);
|
||||
console.log("cleared Passwords");
|
||||
browser.browsingData
|
||||
.removeDownloads({
|
||||
hostnames: [i2pHostName(item.url)],
|
||||
since
|
||||
since,
|
||||
})
|
||||
.then(onContextGotLog);
|
||||
console.log("cleared Downloads");
|
||||
browser.browsingData
|
||||
.removeFormData({
|
||||
hostnames: [i2pHostName(item.url)],
|
||||
since
|
||||
since,
|
||||
})
|
||||
.then(onContextGotLog);
|
||||
console.log("cleared Form Data");
|
||||
browser.browsingData
|
||||
.removeLocalStorage({
|
||||
hostnames: [i2pHostName(item.url)],
|
||||
since
|
||||
since,
|
||||
})
|
||||
.then(onContextGotLog);
|
||||
console.log("cleared Local Storage");
|
||||
|
||||
let contexts = browser.contextualIdentities.query({
|
||||
name: titlepref
|
||||
name: titlepref,
|
||||
});
|
||||
|
||||
function deepCleanCookies(cookies) {
|
||||
@@ -292,7 +380,7 @@ function forgetBrowsingData(storedSettings) {
|
||||
var removing = browser.cookies.remove({
|
||||
firstPartyDomain: cookie.firstPartyDomain,
|
||||
name: cookie.name,
|
||||
url: item.url
|
||||
url: item.url,
|
||||
});
|
||||
removing.then(onContextGotLog, onError);
|
||||
}
|
||||
@@ -303,7 +391,7 @@ function forgetBrowsingData(storedSettings) {
|
||||
for (let cookieStoreId of cookieStoreIds) {
|
||||
var removing = browser.cookies.getAll({
|
||||
firstPartyDomain: null,
|
||||
storeId: cookieStoreId.cookieStoreId
|
||||
storeId: cookieStoreId.cookieStoreId,
|
||||
});
|
||||
removing.then(deepCleanCookies, onError);
|
||||
}
|
||||
@@ -317,7 +405,7 @@ function forgetBrowsingData(storedSettings) {
|
||||
|
||||
var searching = browser.history.search({
|
||||
text: "i2p",
|
||||
startTime: 0
|
||||
startTime: 0,
|
||||
});
|
||||
|
||||
searching.then(deepCleanHistory);
|
||||
@@ -328,7 +416,27 @@ 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("=")) {
|
||||
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];
|
||||
@@ -338,14 +446,15 @@ function i2pHostName(url) {
|
||||
|
||||
function i2pHost(url) {
|
||||
let hostname = i2pHostName(url);
|
||||
if (hostname.endsWith(".i2p")) {
|
||||
console.log("(hostname) i2p", hostname);
|
||||
}
|
||||
return hostname.endsWith(".i2p");
|
||||
}
|
||||
|
||||
function onContextGotLog(contexts) {
|
||||
if (contexts != null) {
|
||||
for (let context of contexts) {
|
||||
console.log(context);
|
||||
}
|
||||
console.log(contexts);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -383,7 +492,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();
|
||||
|
343
proxy.js
@@ -1,119 +1,190 @@
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
var webpref = chrome.i18n.getMessage("webPreface");
|
||||
var routerpref = chrome.i18n.getMessage("routerPreface");
|
||||
var routerprefpriv = chrome.i18n.getMessage("routerPrefacePrivate");
|
||||
var titlepref = chrome.i18n.getMessage('titlePreface');
|
||||
var webpref = chrome.i18n.getMessage('webPreface');
|
||||
var routerpref = chrome.i18n.getMessage('routerPreface');
|
||||
var mailpref = chrome.i18n.getMessage('mailPreface');
|
||||
var torrentpref = chrome.i18n.getMessage('torrentPreface');
|
||||
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 blogpref = chrome.i18n.getMessage('blogPreface');
|
||||
var blogprefpriv = chrome.i18n.getMessage('blogPrefacePrivate');
|
||||
|
||||
browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: false
|
||||
value: true
|
||||
});
|
||||
console.log("Preliminarily disabled WebRTC.");
|
||||
|
||||
chrome.privacy.network.networkPredictionEnabled.set({
|
||||
value: false
|
||||
});
|
||||
chrome.privacy.network.webRTCIPHandlingPolicy.set({
|
||||
value: "proxy_only"
|
||||
value: 'disable_non_proxied_udp'
|
||||
});
|
||||
console.log('Disabled unproxied UDP.');
|
||||
|
||||
function shouldProxyRequest(requestInfo) {
|
||||
return requestInfo.parentFrameId != -1;
|
||||
}
|
||||
|
||||
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 blogProxy() {
|
||||
if (!requestDetails.url.includes('8084')) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
return proxy;
|
||||
}
|
||||
if (requestDetails.url.includes(':8084')) {
|
||||
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") {
|
||||
|
||||
if (context == 'firefox-default' || context == 'firefox-private') {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
}
|
||||
|
||||
if (context != undefined) {
|
||||
if (context.name == titlepref) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
/*console.log("(proxy)", context.name);
|
||||
console.log("Using", proxy.type);
|
||||
console.log("proxy ", proxy.host + ":" + proxy.port);*/
|
||||
console.log('(proxy), context', context);
|
||||
proxy = routerProxy();
|
||||
if (context.name == ircpref) {
|
||||
proxy = ircProxy();
|
||||
return proxy;
|
||||
} else if (context.name == blogpref) {
|
||||
proxy = blogProxy();
|
||||
return proxy;
|
||||
} else if (context.name == titlepref) {
|
||||
proxy = mainProxy();
|
||||
return proxy;
|
||||
} else if (context.name == routerpref) {
|
||||
if (routerHost(requestDetails.url)) {
|
||||
return proxy;
|
||||
} else if (!routerHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: "http",
|
||||
host: "localhost",
|
||||
port: "65535"
|
||||
};
|
||||
proxy = routerProxy();
|
||||
return proxy;
|
||||
} else if (context.name == torrentpref) {
|
||||
proxy = btProxy();
|
||||
return proxy;
|
||||
} else if (context.name == mailpref) {
|
||||
return proxy;
|
||||
} else if (context.name == tunnelpref) {
|
||||
return proxy;
|
||||
} else if (context.name == muwirepref) {
|
||||
return proxy;
|
||||
} else if (context.name == botepref) {
|
||||
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
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (i2pHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
/*console.log("(proxy)", context.name);
|
||||
console.log("Using", proxy.type);
|
||||
console.log("proxy ", proxy.host + ":" + proxy.port);*/
|
||||
return proxy;
|
||||
} else if (context.name == webpref) {
|
||||
if (localHost(requestDetails.url)) {
|
||||
if (!routerHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: "http",
|
||||
host: "localhost",
|
||||
port: "65535"
|
||||
};
|
||||
}
|
||||
}
|
||||
console.log("(proxy)", context.name);
|
||||
console.log("Using", proxy.type);
|
||||
console.log("proxy ", proxy.host + ":" + proxy.port);
|
||||
return proxy;
|
||||
} else {
|
||||
proxy = null;
|
||||
}
|
||||
}
|
||||
if (!routerHost(requestDetails.url)) {
|
||||
if (localHost(requestDetails.url)) {
|
||||
console.log(
|
||||
"(proxy) non-routerconsole localhost url, will not interfere",
|
||||
requestDetails.url
|
||||
);
|
||||
/*proxy = {
|
||||
type: "http",
|
||||
host: "localhost",
|
||||
port: "65535"
|
||||
};*/
|
||||
if (requestDetails.url.includes('rpc')) {
|
||||
console.log('(proxy for rpc url)', rpc);
|
||||
}
|
||||
} else if (i2pHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
//var tab = tabGet(requestDetails.tabId);
|
||||
//tab.then(handleTabRequest,)
|
||||
return proxy;
|
||||
}
|
||||
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) {
|
||||
console.error(error);
|
||||
return "firefox-default";
|
||||
console.warn(error);
|
||||
return 'firefox-default';
|
||||
}
|
||||
};
|
||||
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) {
|
||||
console.log("(proxy)Tab error", error);
|
||||
console.log('(proxy)Tab error', error);
|
||||
}
|
||||
};
|
||||
if (proxyHost(requestDetails.url)) {
|
||||
@@ -124,11 +195,7 @@ 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")
|
||||
);
|
||||
if (requestDetails.originUrl == browser.runtime.getURL('security.html')) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
@@ -137,12 +204,17 @@ var handleContextProxyRequest = async function(requestDetails) {
|
||||
return proxy;
|
||||
}
|
||||
if (
|
||||
requestDetails.cookieStoreId == "firefox-default" ||
|
||||
requestDetails.cookieStoreId == "firefox-private"
|
||||
requestDetails.cookieStoreId == 'firefox-default' ||
|
||||
requestDetails.cookieStoreId == 'firefox-private'
|
||||
) {
|
||||
return browser.proxy.settings.get({});
|
||||
if (browser.windows != undefined) {
|
||||
return browser.proxy.settings.get({});
|
||||
}
|
||||
}
|
||||
if (requestDetails.tabId > 0) {
|
||||
if (requestDetails.url.includes('MuWire')) {
|
||||
return;
|
||||
}
|
||||
if (proxyHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
@@ -150,15 +222,15 @@ var handleContextProxyRequest = async function(requestDetails) {
|
||||
port: getPort()
|
||||
};
|
||||
return proxy;
|
||||
} else if (extensionHost(requestDetails.url)) {
|
||||
return;
|
||||
} else if (i2pHost(requestDetails.url)) {
|
||||
var tab = tabGet(requestDetails.tabId);
|
||||
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 if (extensionHost(requestDetails)) {
|
||||
return;
|
||||
} else {
|
||||
var tab = tabGet(requestDetails.tabId);
|
||||
var context = tab.then(contextGet);
|
||||
@@ -169,64 +241,72 @@ var handleContextProxyRequest = async function(requestDetails) {
|
||||
/*proxy = {};
|
||||
console.log("(proxy)Returning unset Proxy", proxy);
|
||||
return proxy;*/
|
||||
} else {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
//console.log('(proxy for rpc url)', rpc);
|
||||
return proxy;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("(proxy)Not using I2P Proxy.", error);
|
||||
console.log('(proxy)Not using I2P Proxy.', error);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function SetupSettings() {
|
||||
console.log("Initialising Settings");
|
||||
console.log('Initialising Settings');
|
||||
function onSetupError() {
|
||||
console.log("Settings initialization error");
|
||||
console.log('Settings initialization error');
|
||||
}
|
||||
//
|
||||
function checkSchemeStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_scheme == undefined)
|
||||
storedSettings.proxy_scheme = "http";
|
||||
storedSettings.proxy_scheme = 'http';
|
||||
else proxy_scheme = storedSettings.proxy_scheme;
|
||||
|
||||
console.log("Initialising Proxy Scheme", storedSettings.proxy_scheme);
|
||||
console.log('Initialising Proxy Scheme', storedSettings.proxy_scheme);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingSchemeStoredSettings = browser.storage.local.get("proxy_scheme");
|
||||
var gettingSchemeStoredSettings = browser.storage.local.get('proxy_scheme');
|
||||
gettingSchemeStoredSettings.then(checkSchemeStoredSettings, onSetupError);
|
||||
|
||||
//
|
||||
function checkHostStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_host == undefined)
|
||||
storedSettings.proxy_host = "127.0.0.1";
|
||||
storedSettings.proxy_host = '127.0.0.1';
|
||||
else proxy_host = storedSettings.proxy_host;
|
||||
|
||||
console.log("Initialising Host", storedSettings.proxy_host);
|
||||
console.log('Initialising Host', storedSettings.proxy_host);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingHostStoredSettings = browser.storage.local.get("proxy_host");
|
||||
var gettingHostStoredSettings = browser.storage.local.get('proxy_host');
|
||||
gettingHostStoredSettings.then(checkHostStoredSettings, onSetupError);
|
||||
|
||||
//
|
||||
function checkPortStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_port == undefined)
|
||||
storedSettings.proxy_port = "4444";
|
||||
storedSettings.proxy_port = '4444';
|
||||
else proxy_port = storedSettings.proxy_port;
|
||||
|
||||
console.log("Initialising Port", storedSettings.proxy_port);
|
||||
console.log('Initialising Port', storedSettings.proxy_port);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingPortStoredSettings = browser.storage.local.get("proxy_port");
|
||||
var gettingPortStoredSettings = browser.storage.local.get('proxy_port');
|
||||
gettingPortStoredSettings.then(checkPortStoredSettings, onSetupError);
|
||||
|
||||
//
|
||||
function checkControlHostStoredSettings(storedSettings) {
|
||||
if (storedSettings.control_host == undefined)
|
||||
storedSettings.control_host = "127.0.0.1";
|
||||
storedSettings.control_host = '127.0.0.1';
|
||||
else control_host = storedSettings.control_host;
|
||||
|
||||
console.log("Initialising Control Host", storedSettings.control_host);
|
||||
console.log('Initialising Control Host', storedSettings.control_host);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingControlHostStoredSettings = browser.storage.local.get(
|
||||
"control_host"
|
||||
'control_host'
|
||||
);
|
||||
gettingControlHostStoredSettings.then(
|
||||
checkControlHostStoredSettings,
|
||||
@@ -236,14 +316,14 @@ function SetupSettings() {
|
||||
//
|
||||
function checkControlPortStoredSettings(storedSettings) {
|
||||
if (storedSettings.control_port == undefined)
|
||||
storedSettings.control_port = "7657";
|
||||
storedSettings.control_port = '7657';
|
||||
else control_port = storedSettings.control_port;
|
||||
|
||||
console.log("Initialising Control Port", storedSettings.control_port);
|
||||
console.log('Initialising Control Port', storedSettings.control_port);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingControlPortStoredSettings = browser.storage.local.get(
|
||||
"control_port"
|
||||
'control_port'
|
||||
);
|
||||
gettingControlPortStoredSettings.then(
|
||||
checkControlPortStoredSettings,
|
||||
@@ -257,28 +337,28 @@ function SetupSettings() {
|
||||
else disable_history = storedSettings.disable_history;
|
||||
|
||||
console.log(
|
||||
"Initialising Disabled History",
|
||||
'Initialising Disabled History',
|
||||
storedSettings.disable_history
|
||||
);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingHistoryStoredSettings = browser.storage.local.get(
|
||||
"disable_history"
|
||||
'disable_history'
|
||||
);
|
||||
gettingHistoryStoredSettings.then(checkHistoryStoredSettings, onSetupError);
|
||||
}
|
||||
|
||||
function getScheme() {
|
||||
if (proxy_scheme == "HTTP") return "http";
|
||||
if (proxy_scheme == "SOCKS") return "socks";
|
||||
if (proxy_scheme == "http") return "http";
|
||||
if (proxy_scheme == "socks") return "socks";
|
||||
else return "http";
|
||||
if (proxy_scheme == 'HTTP') return 'http';
|
||||
if (proxy_scheme == 'SOCKS') return 'socks';
|
||||
if (proxy_scheme == 'http') return 'http';
|
||||
if (proxy_scheme == 'socks') return 'socks';
|
||||
else return 'http';
|
||||
}
|
||||
|
||||
function getHost() {
|
||||
if (proxy_host == undefined) {
|
||||
proxy_host = "127.0.0.1";
|
||||
proxy_host = '127.0.0.1';
|
||||
}
|
||||
return proxy_host;
|
||||
}
|
||||
@@ -286,41 +366,44 @@ function getHost() {
|
||||
function getPort() {
|
||||
if (proxy_port == undefined) {
|
||||
var scheme = getScheme();
|
||||
if (scheme == "socks") proxy_port = "4446";
|
||||
else proxy_port = "4444";
|
||||
if (scheme == 'socks') proxy_port = '4446';
|
||||
else proxy_port = '4444';
|
||||
}
|
||||
return proxy_port;
|
||||
}
|
||||
|
||||
function getConsolePort() {
|
||||
if (control_port == undefined) {
|
||||
var scheme = getScheme();
|
||||
if (scheme == 'socks') proxy_port = '7657';
|
||||
else control_port = '7657';
|
||||
}
|
||||
return control_port;
|
||||
}
|
||||
|
||||
function setupProxy() {
|
||||
console.log("Setting up Firefox WebExtension proxy");
|
||||
console.log('Setting up Firefox WebExtension proxy');
|
||||
browser.proxy.onRequest.addListener(handleContextProxyRequest, {
|
||||
urls: ["<all_urls>"]
|
||||
urls: ['<all_urls>']
|
||||
});
|
||||
console.log("i2p settings created for WebExtension Proxy");
|
||||
console.log('i2p settings created for WebExtension Proxy');
|
||||
}
|
||||
|
||||
function update() {
|
||||
console.log("restoring proxy scheme:", proxy_scheme);
|
||||
console.log("restoring proxy host:", proxy_host);
|
||||
console.log("restoring proxy port:", proxy_port);
|
||||
console.log("restoring control host:", control_host);
|
||||
console.log("restoring control port:", control_port);
|
||||
console.log('restoring proxy scheme:', proxy_scheme);
|
||||
console.log('restoring proxy host:', proxy_host);
|
||||
console.log('restoring proxy port:', proxy_port);
|
||||
console.log('restoring control host:', control_host);
|
||||
console.log('restoring control port:', control_port);
|
||||
}
|
||||
|
||||
function updateFromStorage() {
|
||||
console.log("updating settings from storage");
|
||||
console.log('updating settings from storage');
|
||||
chrome.storage.local.get(function() {
|
||||
SetupSettings();
|
||||
update();
|
||||
setupProxy();
|
||||
});
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os != "android") {
|
||||
browser.windows.getAll().then(wins => wins.forEach(themeWindow));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
updateFromStorage();
|
||||
@@ -329,10 +412,12 @@ SetupSettings();
|
||||
setupProxy();
|
||||
|
||||
var gettingListenerInfo = browser.runtime.getPlatformInfo();
|
||||
gettingListenerInfo.then(got => {
|
||||
browser.windows.onCreated.addListener(() => {
|
||||
chrome.storage.local.get(function() {
|
||||
setupProxy();
|
||||
gettingListenerInfo.then((got) => {
|
||||
if (browser.windows != undefined) {
|
||||
browser.windows.onCreated.addListener(() => {
|
||||
chrome.storage.local.get(function() {
|
||||
setupProxy();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
277
releases.atom
@@ -4,199 +4,200 @@
|
||||
<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-03-18T02:57:36Z</updated>
|
||||
<updated>2021-05-26T22:32:58Z</updated>
|
||||
<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>
|
||||
<enclosure url="magnet:?xt=urn:btih:e7bbb4695f63d068522713028987626284aa91d0" type="application/x-bittorrent" />
|
||||
<id>tag:github.com,2008:Repository/169256012/0.105</id>
|
||||
<updated>2021-05-27T20:19:35Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.105"/>
|
||||
<title>0.105</title>
|
||||
<enclosure url="magnet:?xl=2485<title>0.105</title>dn=i2ppb%40eyedeekay.github.io.xpi.torrent<title>0.105</title>xt=urn:tree:tiger:w6kewvpw25bnau2rwkczbnryrjdzn54ietse3zi<title>0.105</title>xt=urn:ed2k:1cd9743fb664404298b7f2ad7ee45db0<title>0.105</title>xt=urn:aich:4vhcsp6t3c2mkjzds2etixyinyj7xtkp" type="application/x-bittorrent" />
|
||||
<content type="html"><p>Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.65-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.105-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Initial prototype of certs implementation</li>
|
||||
<li>Use "pinned apptabs" to minimize the number of tabs occupied by an app</li>
|
||||
<li>Get ready for self-hosted updates but with bittorrent because it's cooler</li>
|
||||
<li>Add help page for configuring i2pcontrol</li>
|
||||
<li>Add help page for configuring i2psnark-rpc</li>
|
||||
<li>Update the icons</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 17 MAR 2020 22:58:55 -0400</p>
|
||||
<p>i2psetproxy.js (0.63-1) UNRELEASED; urgency=low</p></content>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Wed, 26 May 2021 12:56:56 -0400</p>
|
||||
<p>i2psetproxy.js (0.103-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&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>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.103</id>
|
||||
<updated>2021-05-26T16:59:28Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.103"/>
|
||||
<title>0.103</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.63-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.103-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>other containerizers bugfix</li>
|
||||
<li>Fix for double-test issue on /home.html page in the extension</li>
|
||||
<li>Fix for broken options menu</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 02 MAR 2020 17:54:26 -0400</p>
|
||||
<p>i2psetproxy.js (0.61-1) UNRELEASED; urgency=low</p></content>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Wed, 26 May 2021 12:56:56 -0400</p>
|
||||
<p>i2psetproxy.js (0.101-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.61</id>
|
||||
<updated>2020-03-02T22:48:06Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.61"/>
|
||||
<title>0.61</title>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.101</id>
|
||||
<updated>2021-05-24T19:42:29Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.101"/>
|
||||
<title>0.101</title>
|
||||
<content type="html"><p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 24 May 2021 3:41:35 -0400</p>
|
||||
<p>i2psetproxy.js (0.99-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Sweeping changes to styles</li>
|
||||
<li>fix for issue when using noscript and visiting susimail</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 24 May 2021 2:05:21 -0400</p>
|
||||
<p>i2psetproxy.js (0.97-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.99</id>
|
||||
<updated>2021-05-24T18:08:37Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.99"/>
|
||||
<title>0.99</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.61-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.99-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>other containerizers bugfix</li>
|
||||
<li>Sweeping changes to styles</li>
|
||||
<li>fix for issue when using noscript and visiting susimail</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 02 MAR 2020 17:46:24 -0400</p>
|
||||
<p>i2psetproxy.js (0.59-1) UNRELEASED; urgency=low</p></content>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 24 May 2021 2:05:21 -0400</p>
|
||||
<p>i2psetproxy.js (0.97-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.59</id>
|
||||
<updated>2020-02-26T03:10:23Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.59"/>
|
||||
<title>0.59</title>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.97</id>
|
||||
<updated>2021-02-05T18:05:51Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.97"/>
|
||||
<title>0.97</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.59-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.97-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>transmission-rpc based torrent controls</li>
|
||||
<li>bugfixes</li>
|
||||
<li>Fix theme issue, add x-i2p-torrentlocation HEADER support</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 25 FEB 2020 20:52:19 -0400</p>
|
||||
<p>i2psetproxy.js (0.57-1) UNRELEASED; urgency=low</p></content>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> FRI, 5 FEB 2021 1:02:55 -0400</p>
|
||||
<p>i2psetproxy.js (0.95-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.57</id>
|
||||
<updated>2020-01-06T17:16:33Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.57"/>
|
||||
<title>0.57</title>
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.95</id>
|
||||
<updated>2020-12-21T23:21:35Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.95"/>
|
||||
<title>0.95</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.95-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Fix github <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="763036769" data-permission-text="Title is private" data-url="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/102" data-hovercard-type="issue" data-hovercard-url="/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/102/hovercard" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/102">#102</a> and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="763043125" data-permission-text="Title is private" data-url="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/103" data-hovercard-type="issue" data-hovercard-url="/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/103/hovercard" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/103">#103</a></li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 21 DEC 2020 6:15:05 -0400</p>
|
||||
<p>i2psetproxy.js (0.93-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.93</id>
|
||||
<updated>2020-12-14T22:20:08Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.93"/>
|
||||
<title>0.93</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.93-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Emergency fix of the first one</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 14 DEC 2020 5:18:53 -0400</p>
|
||||
<p>i2psetproxy.js (0.91-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<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>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.91-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Exclude clearnet code hosting sites from scrub checks</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 14 DEC 2020 2:46:23 -0400</p>
|
||||
<p>i2psetproxy.js (0.89-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&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"><p>============================</p>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.57-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.89-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Snowflake compatibility</li>
|
||||
<li>Lots of small compatibility fixes</li>
|
||||
<li>More linter errors</li>
|
||||
<li>Make it multilingual again</li>
|
||||
<li>Distribute a torrent and a magnet link with the plugin of the plugin</li>
|
||||
<li>Pages with lots of AJAX requests could trigger a performance degradation</li>
|
||||
<li>Improve performance of x-i2p-* headers and meta tags</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Thu, 4 JAN 2019 16:43:58 -0400</p></content>
|
||||
<p>i2psetproxy.js (0.87-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/docs</id>
|
||||
<updated>2020-01-03T18:01:49Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/docs"/>
|
||||
<title>Documentation</title>
|
||||
<content type="html"><p>PDF's and text about the extension</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.55</id>
|
||||
<updated>2020-01-06T17:17:01Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.55"/>
|
||||
<title>0.55</title>
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
<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"><p>Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.55-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.87-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Get rid of Web Browsing context launcher</li>
|
||||
<li>Fix linter errors</li>
|
||||
<li>Tolerate themes</li>
|
||||
<li>Tolerate other containerizers</li>
|
||||
<li>Disable searching for i2p sites in non-i2p search engines</li>
|
||||
<li>Add contexts for i2pbote and Dispatch</li>
|
||||
<li>Remain in tighter control of x-i2p-torrentlocation priority</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Thu, 2 JAN 2019 16:47:33 -0400</p></content>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 10 NOV 2020 1:33:50 -0400</p>
|
||||
<p>i2psetproxy.js (0.85-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.53</id>
|
||||
<updated>2020-01-06T17:17:35Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.53"/>
|
||||
<title>0.53</title>
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.51-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Numerous code cleanups, compatibility fixes</li>
|
||||
<li>enable-disable history</li>
|
||||
<li>better homepage, better control panel, saner options</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 23 NOV 2019 22:51:11 -0400</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.51</id>
|
||||
<updated>2020-01-06T17:18:09Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.51"/>
|
||||
<title>0.51</title>
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.49-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>fix tabs</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 23 NOV 2019 22:51:11 -0400</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.49</id>
|
||||
<updated>2020-01-06T17:18:38Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.49"/>
|
||||
<title>0.49</title>
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.49-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>fix tabs</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 23 NOV 2019 22:51:11 -0400</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
</feed>
|
||||
|
Before Width: | Height: | Size: 242 KiB After Width: | Height: | Size: 198 KiB |
151
script.js
Normal file
@@ -0,0 +1,151 @@
|
||||
browser.runtime.onMessage.addListener((request) => {
|
||||
var response = 'no-alt-location';
|
||||
console.log(request);
|
||||
if (request.req === 'i2p-location') {
|
||||
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') {
|
||||
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;
|
||||
}
|
27
search.css
@@ -2,13 +2,9 @@
|
||||
overflow: hidden;
|
||||
min-height: 3rem;
|
||||
padding: .5rem;
|
||||
background: #dee2e6;
|
||||
border: 1px solid #dee2e6;
|
||||
width: 64%;
|
||||
min-width: 64%;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
|
||||
margin: .5rem .5rem .5rem 32%
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
|
||||
}
|
||||
.topnav a {
|
||||
float: left;
|
||||
@@ -24,10 +20,10 @@
|
||||
color: #fff
|
||||
}
|
||||
.topnav input[type=search] {
|
||||
float: right;
|
||||
padding: 6px;
|
||||
border: none;
|
||||
margin-top: 8px;
|
||||
color: #e6e6e7;
|
||||
margin-right: 16px
|
||||
}
|
||||
.topnav input[type=submit] {
|
||||
@@ -35,19 +31,12 @@
|
||||
padding: 6px;
|
||||
border: none;
|
||||
margin-top: 8px;
|
||||
color: #e6e6e7;
|
||||
margin-right: 16px
|
||||
}
|
||||
@media screen and (max-width: 600px) {
|
||||
.topnav a,
|
||||
.topnav input[type=text] {
|
||||
float: none;
|
||||
display: block;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 14px
|
||||
}
|
||||
.topnav input[type=text] {
|
||||
border: 1px solid #ccc
|
||||
}
|
||||
#search-query {
|
||||
color: #1f1a24
|
||||
}
|
||||
#search-submit {
|
||||
color: #1f1a24
|
||||
}
|
70
sectorrent.html
Normal file
@@ -0,0 +1,70 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<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">-->
|
||||
|
||||
<title>
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="browserpanel">
|
||||
<div class="panel">
|
||||
<div class="section-header panel-section panel-section-header" id="headline">
|
||||
<div class="text-section-header" id="text-section-header">
|
||||
<h1 id="text-section-header">I2P Site Properties | This I2P Site has peer-to-peer resources.</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<ul>
|
||||
<li>
|
||||
<div class="address-info">
|
||||
<div id="addresstype">
|
||||
<span id="TypeLabel">Address Type:</span> <span id="Type"></span>
|
||||
<div id="TypeInfo">
|
||||
<span id="AddressInfo"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="tls-info">
|
||||
<div id="sitecert">
|
||||
<span id="CertLabel">Certificate Information:</span> <span id="Cert"></span>
|
||||
<div id="CertInfo">
|
||||
<span id="AddressCertInfo"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div id="signingcert">
|
||||
<span id="SignedLabel">Signed By:</span> <span id="Signed"></span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<p>
|
||||
To help distribute the site content, use the links below to join the swarm.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="address-info">
|
||||
<span id="TorrentTypeLabel">Torrent Links:</span> <span id="Type"></span>
|
||||
<div id="TorrentTypeInfo">
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<script src="cert.js"></script>
|
||||
<script src="torrent.js"></script>
|
||||
</body>
|
||||
</html>
|
@@ -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>
|
||||
|
16
sidebar.css
@@ -2,6 +2,22 @@ li {
|
||||
width: 90%;
|
||||
margin-left: 0
|
||||
}
|
||||
ul {
|
||||
width: 100%
|
||||
}
|
||||
button {
|
||||
width: 50%;
|
||||
text-align: center
|
||||
}
|
||||
#applicationExplain {
|
||||
float: unset
|
||||
}
|
||||
.button-list {
|
||||
display: inline
|
||||
}
|
||||
#hidden {
|
||||
display: none
|
||||
}
|
||||
.hidden {
|
||||
display: none
|
||||
}
|
BIN
susimail.png
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 65 KiB |
94
toopie.html
@@ -6,57 +6,81 @@
|
||||
<link href="sidebar.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<script src="i2pcontrol/i2pcontrol.js"></script>
|
||||
<script src="info.js"></script>
|
||||
<script src="content.js"></script>
|
||||
<h1>I2P Router Information</h1>
|
||||
|
||||
<ul>
|
||||
<li><button id="label-router-restart" target="_blank">Restart: <span id="router-restart">Gracefully restart router</span></button>
|
||||
<li>
|
||||
<a href="http://localhost:7657" target="_blank"><img alt="i2p router console" class="center" src="/icons/i2plogo.png"></a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="button-list">
|
||||
<li><button id="label-router-restart" target="_blank"><img alt="Restart:" id="label-router-shutdown" src="/images/restart.svg"></button>
|
||||
<br>
|
||||
<span id="router-restart">Gracefully restart router</span>
|
||||
</li>
|
||||
|
||||
<li><button id="label-router-shutdown" target="_blank">Shutdown: <span id="router-shutdown">Gracefully shutdown router</span></button>
|
||||
<li><button id="label-router-shutdown" target="_blank"><img alt="Shutdown:" id="label-router-shutdown" src="/images/shutdown.svg"></button>
|
||||
<br>
|
||||
<span id="router-shutdown">Gracefully shutdown router</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul>
|
||||
<li><button id="label-router-status" target="_blank">Status</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="label-list" id="label-status-list">
|
||||
<li><span id="label-router-status">Router Status:</span> <span id="router-status">Replace with Router Status</span></li>
|
||||
|
||||
<li><span id="label-router-uptime">Router Uptime(Ms):</span> <span id="router-uptime">Replace with Router Uptime</span></li>
|
||||
|
||||
<li><span id="label-router-version">Router Version:</span> <span id="router-version">Replace with Router Version</span></li>
|
||||
</ul>
|
||||
|
||||
<li>
|
||||
<ul>
|
||||
<li><span id="label-router-bw-outbound-1s">Outbound bw 1s:</span> <span id="router-net-bw-outbound-1s">Replace with Router Bandwidth Outbound 1s</span></li>
|
||||
|
||||
<li><span id="label-router-bw-outbound-15s">Outbound bw 15s:</span> <span id="router-net-bw-outbound-15s">Replace with Router Bandwidth Outbound 15s</span></li>
|
||||
|
||||
<li><span id="label-router-bw-inbound-1s">Inbound bw 1s:</span> <span id="router-net-bw-inbound-1s">Replace with Router Bandwidth Inbound 1s</span></li>
|
||||
|
||||
<li><span id="label-router-bw-inbound-15s">Inbound bw 15s:</span> <span id="router-net-bw-inbound-15s">Replace with Router Bandwidth Outbound 15s</span></li>
|
||||
</ul>
|
||||
</li>
|
||||
<!--<li>
|
||||
<span id="label-router-net-status">Network Status:</span>
|
||||
<span id="router-net-status">Replace with Router Network Status</span>
|
||||
</li>-->
|
||||
|
||||
<li>
|
||||
<ul>
|
||||
<li><span id="label-router-net-tunnels-participating">Participating Tunnels:</span> <span id="router-net-tunnels-participating">Replace with Router Participating Tunnel Count</span></li>
|
||||
|
||||
<li><span id="label-router-activepeers">Active Peers:</span> <span id="router-netdb-activepeers">Replace with Router Active Peers</span></li>
|
||||
|
||||
<li><span id="label-router-netdb-fastpeers">Fast Peers:</span> <span id="router-netdb-fastpeers">Replace with Router Fast Peers</span></li>
|
||||
|
||||
<li><span id="label-router-netdb-highcapacitypeers">High Capacity Peers:</span> <span id="router-netdb-highcapacitypeers">Replace with High Capacity Peers</span></li>
|
||||
|
||||
<li><span id="label-router-netdb-isreseeding">Reseed status:</span> <span id="router-netdb-isreseeding">Replace with Router netDB Reseeding Status</span></li>
|
||||
|
||||
<li><span id="label-router-netdb-knownpeers">Known Peers:</span> <span id="router-netdb-knownpeers">Replace with Router Known Peers</span></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><button id="label-router-bandwidth" target="_blank">Bandwidth</button>
|
||||
</li>
|
||||
</ul>
|
||||
<script src="i2pcontrol/i2pcontrol.js"></script>
|
||||
<script src="info.js"></script>
|
||||
<script src="content.js"></script>
|
||||
|
||||
<ul class="label-list" id="label-bandwidth-list">
|
||||
<li><span id="label-router-bw-outbound-1s">Outbound bw 1s:</span> <span id="router-net-bw-outbound-1s">Replace with Router Bandwidth Outbound 1s</span></li>
|
||||
|
||||
<li><span id="label-router-bw-outbound-15s">Outbound bw 15s:</span> <span id="router-net-bw-outbound-15s">Replace with Router Bandwidth Outbound 15s</span></li>
|
||||
|
||||
<li><span id="label-router-bw-inbound-1s">Inbound bw 1s:</span> <span id="router-net-bw-inbound-1s">Replace with Router Bandwidth Inbound 1s</span></li>
|
||||
|
||||
<li><span id="label-router-bw-inbound-15s">Inbound bw 15s:</span> <span id="router-net-bw-inbound-15s">Replace with Router Bandwidth Outbound 15s</span></li>
|
||||
</ul>
|
||||
<!--<li>
|
||||
<span id="label-router-net-status">Network Status:</span>
|
||||
<span id="router-net-status">Replace with Router Network Status</span>
|
||||
</li>-->
|
||||
|
||||
<ul>
|
||||
<li><button id="label-router-peers" target="_blank">Peers</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="label-list" id="label-peers-list">
|
||||
<li><span id="label-router-net-tunnels-participating">Transit Tunnels:</span> <span id="router-net-tunnels-participating">Replace with Router Participating Tunnel Count</span></li>
|
||||
|
||||
<li><span id="label-router-activepeers">Active Peers:</span> <span id="router-netdb-activepeers">Replace with Router Active Peers</span></li>
|
||||
|
||||
<li><span id="label-router-netdb-fastpeers">Fast Peers:</span> <span id="router-netdb-fastpeers">Replace with Router Fast Peers</span></li>
|
||||
|
||||
<li><span id="label-router-netdb-highcapacitypeers">High Capacity Peers:</span> <span id="router-netdb-highcapacitypeers">Replace with High Capacity Peers</span></li>
|
||||
|
||||
<li><span id="label-router-netdb-isreseeding">Reseed status:</span> <span id="router-netdb-isreseeding">Replace with Router netDB Reseeding Status</span></li>
|
||||
|
||||
<li><span id="label-router-netdb-knownpeers">Known Peers:</span> <span id="router-netdb-knownpeers">Replace with Router Known Peers</span></li>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
</body>
|
||||
</html>
|
||||
|
BIN
toopie.png
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 133 KiB |
39
torrent.html
Normal file
@@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<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">-->
|
||||
|
||||
<title>
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="browserpanel">
|
||||
<div class="panel">
|
||||
<div class="section-header panel-section panel-section-header" id="headline">
|
||||
<div class="text-section-header" id="text-section-header">
|
||||
<h1 id="text-section-header">This I2P Site has peer-to-peer resources.</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<p>
|
||||
To help distribute the site content, use the links below to join the swarm.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="address-info">
|
||||
<span id="TypeLabel">Torrent Links:</span> <span id="Type"></span>
|
||||
<div id="TypeInfo">
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<script src="torrent.js"></script>
|
||||
</body>
|
||||
</html>
|
19
torrent.js
Normal file
@@ -0,0 +1,19 @@
|
||||
function gotCurrent(tab) {
|
||||
function gotTitle(title) {
|
||||
let addr = title;
|
||||
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
|
||||
});
|
||||
gettingTitle.then(gotTitle);
|
||||
}
|
||||
|
||||
function tabError(error) {
|
||||
console.log(`Error : ${error}`);
|
||||
}
|
||||
|
||||
const gettingCurrent = browser.tabs.query({ active: true });
|
||||
gettingCurrent.then(gotCurrent, tabError);
|
@@ -1,4 +1,4 @@
|
||||
Acknowledgement
|
||||
Acknowledgementindex
|
||||
===============
|
||||
|
||||
**Many, many thanks to the [Transmitter](https://github.com/myfreeweb/transmitter)
|
||||
@@ -33,7 +33,7 @@ To install the plugin, go to [http://127.0.0.1:7657/configplugins](http://127.0.
|
||||
and scroll down to the section of the page where it says "Installation from URL"
|
||||
and paste the following URL:
|
||||
|
||||
```http://stats.i2p/i2p/plugins/i2psnark-rpc.su3```
|
||||
`http://stats.i2p/i2p/plugins/i2psnark-rpc.su3`
|
||||
|
||||
Click the "Install Plugin" button and you'll be ready to go. Now, open the
|
||||
extension options menu, and just click "Save." The defaults are correct for use
|
||||
|
@@ -1,18 +1,18 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
|
||||
////// Session extraction
|
||||
|
||||
function setupExtractor() {
|
||||
browser.webRequest.onHeadersReceived.removeListener(extractSession);
|
||||
browser.storage.local.get("server").then(({ server }) => {
|
||||
browser.storage.local.get('server').then(({ server }) => {
|
||||
if (!server) {
|
||||
return;
|
||||
}
|
||||
console.log("Session extractor setup for", server.base_url);
|
||||
console.log('Session extractor setup for', server.base_url);
|
||||
browser.webRequest.onBeforeSendHeaders.addListener(
|
||||
extractSession,
|
||||
{ urls: [server.base_url + "*"] },
|
||||
["requestHeaders"]
|
||||
{ urls: [server.base_url + '*'] },
|
||||
['requestHeaders']
|
||||
);
|
||||
});
|
||||
}
|
||||
@@ -21,7 +21,7 @@ setupExtractor();
|
||||
|
||||
function extractSession(requestDetails) {
|
||||
const hdr = requestDetails.requestHeaders.filter(
|
||||
x => x.name.toLowerCase() === "x-transmission-session-id"
|
||||
(x) => x.name.toLowerCase() === "x-transmission-session-id"
|
||||
)[0];
|
||||
if (!hdr) {
|
||||
return;
|
||||
@@ -58,21 +58,21 @@ function addUrl(torrentUrl, downloadDir) {
|
||||
console.log("Downloading torrent", torrentUrl);
|
||||
p = fetch(torrentUrl, {
|
||||
method: "GET",
|
||||
credentials: "include"
|
||||
credentials: "include",
|
||||
})
|
||||
.then(resp => {
|
||||
.then((resp) => {
|
||||
if (resp.ok) {
|
||||
return resp.blob();
|
||||
}
|
||||
throw new Error("Could not download torrent");
|
||||
})
|
||||
.then(blobToBase64)
|
||||
.then(b64 => {
|
||||
.then((b64) => {
|
||||
params.metainfo = b64;
|
||||
return rpcCall("torrent-add", params);
|
||||
});
|
||||
}
|
||||
return p.then(x => {
|
||||
return p.then((x) => {
|
||||
updateBadge();
|
||||
return x;
|
||||
});
|
||||
@@ -85,7 +85,7 @@ function handleUrl(requestDetails) {
|
||||
decodeURIComponent(
|
||||
requestDetails.url.replace("http://transmitter.web-extension/", "")
|
||||
)
|
||||
).then(x => {
|
||||
).then((x) => {
|
||||
return browser.storage.local.get("server").then(({ server }) => {
|
||||
return { redirectUrl: server.base_url + "web/" };
|
||||
});
|
||||
@@ -107,26 +107,27 @@ function createContextMenu() {
|
||||
browser.contextMenus.create({
|
||||
id: "transmitter-add",
|
||||
title: "Download with Transmission remote",
|
||||
contexts: ["link"]
|
||||
contexts: ["link"],
|
||||
});
|
||||
} else {
|
||||
browser.contextMenus.create({
|
||||
id: "transmitter-add",
|
||||
title: "Download to Default location",
|
||||
contexts: ["link"]
|
||||
contexts: ["link"],
|
||||
});
|
||||
server.locations.forEach(location => {
|
||||
server.locations.forEach((location) => {
|
||||
browser.contextMenus.create({
|
||||
id: "transmitter-add-loc-" + location.index,
|
||||
title: "Download to " + location.name,
|
||||
contexts: ["link"]
|
||||
contexts: ["link"],
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
createContextMenu();
|
||||
if (browser.windows != undefined){
|
||||
createContextMenu();
|
||||
|
||||
browser.contextMenus.onClicked.addListener((info, tab) => {
|
||||
if (info.menuItemId === "transmitter-add") {
|
||||
@@ -139,7 +140,7 @@ browser.contextMenus.onClicked.addListener((info, tab) => {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
////// Badge
|
||||
|
||||
function updateBadge() {
|
||||
@@ -152,42 +153,42 @@ function updateBadge() {
|
||||
) {
|
||||
return;
|
||||
}
|
||||
return rpcCall("session-stats", {}).then(response => {
|
||||
return rpcCall("session-stats", {}).then((response) => {
|
||||
const args = response.arguments; // lol the name 'arguments' means destructuring in strict mode is impossible
|
||||
switch (server.badge) {
|
||||
case "num":
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "gray" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: "" + args.activeTorrentCount
|
||||
text: "" + args.activeTorrentCount,
|
||||
});
|
||||
break;
|
||||
case "dl":
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "green" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: formatSpeed(args.downloadSpeed)
|
||||
text: formatSpeed(args.downloadSpeed),
|
||||
});
|
||||
break;
|
||||
case "ul":
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "blue" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: formatSpeed(args.uploadSpeed)
|
||||
text: formatSpeed(args.uploadSpeed),
|
||||
});
|
||||
break;
|
||||
case "auto":
|
||||
if (args.downloadSpeed > 0) {
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "green" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: formatSpeed(args.downloadSpeed)
|
||||
text: formatSpeed(args.downloadSpeed),
|
||||
});
|
||||
} else if (args.uploadSpeed > 0) {
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "blue" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: formatSpeed(args.uploadSpeed)
|
||||
text: formatSpeed(args.uploadSpeed),
|
||||
});
|
||||
} else {
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "gray" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: "" + args.activeTorrentCount
|
||||
text: "" + args.activeTorrentCount,
|
||||
});
|
||||
}
|
||||
break;
|
||||
@@ -196,20 +197,20 @@ function updateBadge() {
|
||||
});
|
||||
}
|
||||
|
||||
browser.alarms.onAlarm.addListener(alarm => {
|
||||
browser.alarms.onAlarm.addListener((alarm) => {
|
||||
if (alarm.name === "transmitter-badge-update") {
|
||||
return updateBadge();
|
||||
}
|
||||
});
|
||||
|
||||
function setupBadge() {
|
||||
browser.alarms.clear("transmitter-badge-update").then(x => {
|
||||
browser.alarms.clear("transmitter-badge-update").then((x) => {
|
||||
browser.storage.local.get("server").then(({ server }) => {
|
||||
if (!server) {
|
||||
return;
|
||||
}
|
||||
browser.alarms.create("transmitter-badge-update", {
|
||||
periodInMinutes: parseInt(server.badge_interval || "1")
|
||||
periodInMinutes: parseInt(server.badge_interval || "1"),
|
||||
});
|
||||
updateBadge();
|
||||
});
|
||||
|
@@ -1,28 +1,28 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
|
||||
////// RPC
|
||||
|
||||
function rpcCall(meth, args) {
|
||||
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");
|
||||
const session = response.headers.get('x-transmission-session-id');
|
||||
if (session) {
|
||||
browser.storage.local.get({}).then(function(storage) {
|
||||
storage.session = session;
|
||||
@@ -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';
|
||||
}
|
||||
|
@@ -6,7 +6,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="../sidebar.css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>Acknowledgement</h1>
|
||||
<h1>Acknowledgementindex</h1>
|
||||
|
||||
<p><strong>Many, many thanks to the <a href="https://github.com/myfreeweb/transmitter">Transmitter</a>
|
||||
webextension.</strong></p>
|
||||
|
@@ -1,22 +1,27 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
|
||||
var TrpcCall = async function(meth, args) {
|
||||
const server = await browser.storage.local.get(null);
|
||||
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) session", server.session);
|
||||
if (server.username !== "" || server.btrpcpass !== "") {
|
||||
myHeaders["Authorization"] =
|
||||
"Basic " + btoa((server.username || "") + ":" + (server.btrpcpass || ""));
|
||||
console.log('(torrent) session', server.session);
|
||||
if (server.username !== '' || server.bt_rpc_pass !== '') {
|
||||
myHeaders['Authorization'] =
|
||||
'Basic ' +
|
||||
btoa((server.username || '') + ':' + (server.bt_rpc_pass || ''));
|
||||
}
|
||||
console.log("(torrent) rpcurl", server.base_url + "rpc");
|
||||
return fetch(server.base_url + "rpc", {
|
||||
method: "POST",
|
||||
|
||||
let req_url = 'http://' + server.bt_rpc_host;
|
||||
if (server.bt_rpc_port != 0) req_url += ':' + server.bt_rpc_port;
|
||||
req_url += '/' + server.bt_rpc_path;
|
||||
console.log('(torrent) rpcurl', req_url);
|
||||
return fetch(req_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) {
|
||||
@@ -32,13 +37,13 @@ var TrpcCall = async function(meth, args) {
|
||||
error.response = response;
|
||||
throw error;
|
||||
});*/
|
||||
};
|
||||
}
|
||||
|
||||
const torrentsPane = document.getElementById("torrents-pane");
|
||||
const configPane = document.getElementById("config-pane");
|
||||
const torrentsPane = document.getElementById('torrents-pane');
|
||||
const configPane = document.getElementById('config-pane');
|
||||
|
||||
for (const opener of document.querySelectorAll(".config-opener")) {
|
||||
opener.addEventListener("click", e => {
|
||||
for (const opener of document.querySelectorAll('.config-opener')) {
|
||||
opener.addEventListener('click', (e) => {
|
||||
browser.runtime.openOptionsPage();
|
||||
});
|
||||
}
|
||||
@@ -53,7 +58,13 @@ const torrentsList = document.getElementById("torrents-list");
|
||||
const torrentsTpl = document.getElementById("torrents-tpl");
|
||||
const torrentsError = document.getElementById("torrents-error");
|
||||
const getArgs = {
|
||||
fields: ["name", "percentDone", "rateDownload", "rateUpload", "queuePosition"]
|
||||
fields: [
|
||||
"name",
|
||||
"percentDone",
|
||||
"rateDownload",
|
||||
"rateUpload",
|
||||
"queuePosition",
|
||||
],
|
||||
};
|
||||
let cachedTorrents = [];
|
||||
|
||||
@@ -90,7 +101,7 @@ function searchTorrents() {
|
||||
let newTorrents = cachedTorrents;
|
||||
const val = torrentsSearch.value.toLowerCase().trim();
|
||||
if (val.length > 0) {
|
||||
newTorrents = newTorrents.filter(x => x.name.toLowerCase().includes(val));
|
||||
newTorrents = newTorrents.filter((x) => x.name.toLowerCase().includes(val));
|
||||
}
|
||||
renderTorrents(newTorrents);
|
||||
}
|
||||
@@ -99,16 +110,16 @@ torrentsSearch.addEventListener("keyup", searchTorrents);
|
||||
|
||||
function refreshTorrents(server) {
|
||||
console.log("(torrent) initiating", server);
|
||||
return TrpcCall("torrent-get", getArgs).then(function(response) {
|
||||
return TrpcCall("torrent-get", getArgs).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);
|
||||
});
|
||||
}
|
||||
let sponse = response.json();
|
||||
sponse.then(function(response) {
|
||||
sponse.then(function (response) {
|
||||
console.log("(torrent) refreshing", response);
|
||||
let newTorrents = response.arguments.torrents;
|
||||
newTorrents.sort((x, y) => y.queuePosition - x.queuePosition);
|
||||
@@ -125,7 +136,7 @@ function refreshTorrents(server) {
|
||||
}
|
||||
|
||||
function refreshTorrentsLogErr(server) {
|
||||
return refreshTorrents(server).catch(err => {
|
||||
return refreshTorrents(server).catch((err) => {
|
||||
console.error(err);
|
||||
torrentsError.textContent = "Error: " + err.toString();
|
||||
});
|
||||
@@ -135,15 +146,18 @@ function showTorrents(server) {
|
||||
torrentsPane.hidden = false;
|
||||
configPane.hidden = true;
|
||||
for (const opener of document.querySelectorAll(".webui-opener")) {
|
||||
opener.href = server.base_url + "web/";
|
||||
let req_url = "http://" + server.bt_rpc_host;
|
||||
if (server.bt_rpc_port != 0) req_url += ":" + server.bt_rpc_port;
|
||||
req_url += "/" + server.bt_rpc_path;
|
||||
opener.href = req_url + "web/";
|
||||
}
|
||||
console.log("(torrent) showing torrents");
|
||||
refreshTorrents(server).catch(_ => refreshTorrentsLogErr(server));
|
||||
setInterval(() => refreshTorrentsLogErr(server), 2000);
|
||||
refreshTorrents(server).catch((_) => refreshTorrentsLogErr(server));
|
||||
setInterval(() => refreshTorrentsLogErr(server), 60000);
|
||||
}
|
||||
|
||||
//let store =
|
||||
browser.storage.local.get(function(server) {
|
||||
browser.storage.local.get(function (server) {
|
||||
console.log("(torrent) querying storage", server);
|
||||
if (server && server.base_url && server.base_url !== "") {
|
||||
showTorrents(server);
|
||||
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 80 KiB |
50
window.html
@@ -12,13 +12,13 @@
|
||||
<body>
|
||||
<div class="section-header panel-section panel-section-header" id="topbar">
|
||||
<!--<div class="text-section-header" id="text-section-header">-->
|
||||
<img height="32px" src="icons/toopie.png" width="32px"> <a href="#" id="browser-action">Browse</a> <img height="32px" src="icons/torrents.png" width="32px"> <a href="#" id="torrent-action">Download</a> <!--</div>-->
|
||||
<a href="#" id="browser-action"><img class="tabicon" height="32px" src="icons/browse.png" width="32px">Browse</a> <a href="#" id="torrent-action"><img class="tabicon" height="32px" src="icons/torrents.png" width="32px">Download</a> <!--</div>-->
|
||||
</div>
|
||||
|
||||
<div id="browserpanel">
|
||||
<div class="panel">
|
||||
<div class="section-header panel-section panel-section-header" id="headline">
|
||||
<div class="text-section-header" id="text-section-header">
|
||||
<div class="text-section-header">
|
||||
<h1 id="text-section-header">The Invisible Internet Browser</h1>
|
||||
</div>
|
||||
</div>
|
||||
@@ -35,13 +35,12 @@
|
||||
</div>
|
||||
|
||||
<div class="hideIfI2PProxyOff" id="readyness">
|
||||
<img class="readyness" src="http://proxy.i2p/themes/console/images/local_up.png"> <span id="proxy-check">Proxy is ready.</span>
|
||||
<img class="readyness" src="icons/local_up.png"> <span id="proxy-check">Proxy is ready.</span>
|
||||
</div>
|
||||
|
||||
<div id="i2pbrowser-description">
|
||||
<p id="description">You are now able to use I2P in this browser.</p>
|
||||
|
||||
<p id="beta">It is experimental.</p>
|
||||
<button class="hidden" id="visit-irc">Visit IRC</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -54,11 +53,11 @@
|
||||
<p id="controlExplain">These controls are used to tailor your I2P Browsing Experience</p>
|
||||
|
||||
<ul>
|
||||
<li class="application">
|
||||
<!--<li class="application">
|
||||
<a href="#" id="clear-browser-data">Clear Browsing Data:</a> <span class="applicationDesc" id="clear-desc">Use this to erase your browsing data.</span>
|
||||
</li>
|
||||
|
||||
<li class="application"><input id="enable-web-rtc" name="enablewebrtc" type="checkbox" value="webrtc"> <label for="enable-web-rtc">Enable WebRTC <strong>with Proxy?</strong></label> <span class="applicationDesc" id="rtcDesc">WebRTC is disabled by default, but can be enabled by checking this box.</span></li>
|
||||
<li class="application"><input id="enable-web-rtc" name="enablewebrtc" type="checkbox" value="webrtc"> <label for="enable-web-rtc">Enable WebRTC <strong>with Proxy?</strong></label> <span class="applicationDesc" id="rtcDesc">WebRTC is disabled by default, but can be enabled by checking this box.</span></li>-->
|
||||
|
||||
<li class="application">
|
||||
<div class="panel-section-separator">
|
||||
@@ -72,16 +71,9 @@
|
||||
|
||||
<li class="application"><input id="disable-history" name="disablehistory" type="checkbox" value="history"> <label for="disable-history">Disable History in I2P Tabs</label> <span class="applicationDesc" id="histDesc">History is automatically cleared when your I2P tabs are closed. If you want to clear history as you go, check this box.</span></li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="panel-section-separator">
|
||||
</div>
|
||||
<!--<div class="panel-section-separator">
|
||||
</div>-->
|
||||
|
||||
<div class="application-info">
|
||||
<p class="hideIfI2PConsoleOff">
|
||||
@@ -92,9 +84,9 @@
|
||||
<p id="applicationExplain">These applications use I2P to provide them with security and privacy.</p>
|
||||
|
||||
<ul>
|
||||
<li class="application"><button class="applicationName window-visit-homepage" href="#" id="window-visit-index" target="_blank">Help Page</button> <span class="applicationDesc" id="abouthome">For more information about this extension, go here:</span></li>
|
||||
<li class="application"><button class="applicationName window-visit-help" href="#" id="window-visit-help" target="_blank">Help Page</button> <span class="applicationDesc" id="abouthome">For more information about this extension, go here:</span></li>
|
||||
|
||||
<li class="application"><button class="applicationName window-visit-toopie" href="#" id="window-visit-toopie" target="_blank">Toopie</button> <span class="applicationDesc" id="toopie">For information about your I2P router status, go here:</span></li>
|
||||
<li class="application window-visit-toopie"><button class="applicationName window-visit-toopie" href="#" id="window-visit-toopie" target="_blank">Toopie</button> <span class="applicationDesc window-visit-toopie" id="toopie">For information about your I2P router status, go here:</span></li>
|
||||
|
||||
<li class="application"><button class="applicationName" id="window-visit-i2ptunnel" target="_blank">Hidden Services Manager</button> <span class="applicationDesc" id="i2ptunnel">I2P has a web-based interface for configuring .i2p services like web sites, to set up your own web sites, go here:</span></li>
|
||||
|
||||
@@ -102,39 +94,37 @@
|
||||
|
||||
<li class="application"><button class="applicationName" id="window-visit-snark" target="_blank">BitTorrent</button> <span class="applicationDesc" id="snark">I2P is capable of anonymous Peer-to-Peer file sharing, to use the built-in bittorrent client go here:</span></li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div id="torrentpanel">
|
||||
<div class="panel" id="torrentstatus">
|
||||
<div class="section-header panel-section panel-section-header">
|
||||
<div class="text-section-header" id="text-section-torrents-header">
|
||||
<h3>Torrent Downloads</h3>
|
||||
<h1>Torrent Downloads</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div hidden="" id="config-pane">
|
||||
<div id="config-pane">
|
||||
<strong>Torrent RPC Configuration</strong>
|
||||
<br>
|
||||
The server address is not set yet.
|
||||
<br>
|
||||
<a class="torrent-opener" id="window-visit-torrent" href="#">For assistance, visit the torrent help page</a>.
|
||||
<br>
|
||||
<a class="config-opener" href="#">Open the settings</a> to continue.
|
||||
</div>
|
||||
|
||||
<div hidden="" id="torrents-pane">
|
||||
<div id="torrents-pane">
|
||||
<header>
|
||||
<h1>Torrent Controls</h1>
|
||||
<a class="webui-opener" href="#" target="_blank"><img alt="Open Web UI" src="icon.svg"></a> <!--<a class="config-opener" href="#">
|
||||
<img alt="Settings" src="gear.svg"></a>
|
||||
<a class="webui-opener" href="#" target="_blank"><img alt="Open Web UI" src="images/i2plogo.png"></a> <!--<a class="config-opener" href="#">
|
||||
<img alt="Settings" src="images/gear.svg"></a>
|
||||
<a class="info-opener" href="https://github.com/myfreeweb/transmitter" target="_blank">
|
||||
<img alt="Extension Info" src="info.svg"></a>-->
|
||||
<img alt="Extension Info" src="images/info.svg"></a>-->
|
||||
</header>
|
||||
<input id="torrents-search" placeholder="Search…" type="search">
|
||||
<template id="torrents-tpl">
|
||||
|
BIN
x-i2p-torrentlocation.png
Normal file
After Width: | Height: | Size: 237 KiB |