Compare commits
42 Commits
android-tr
...
master
Author | SHA1 | Date | |
---|---|---|---|
![]() |
ad3d22c6bc | ||
![]() |
458f20def6 | ||
![]() |
66a36d3e86 | ||
![]() |
da3b6a553b | ||
![]() |
306426ae3c | ||
![]() |
2df3ccacf2 | ||
![]() |
b0e57dd91a | ||
![]() |
ff46fa5f80 | ||
![]() |
29d7a0f776 | ||
![]() |
4c3520bfd3 | ||
![]() |
8f1d150bad | ||
![]() |
4e7381ece9 | ||
![]() |
a911fc3126 | ||
![]() |
c58cf63027 | ||
![]() |
a76e7299c7 | ||
![]() |
26b637f201 | ||
![]() |
c1b55a4feb | ||
![]() |
80c66ba2f7 | ||
![]() |
6415ee2996 | ||
![]() |
83b5dcc4b4 | ||
![]() |
26e0228687 | ||
![]() |
73f2883fbd | ||
![]() |
4d317eac4c | ||
![]() |
4755637206 | ||
![]() |
b84d8945aa | ||
![]() |
7e1428310b | ||
![]() |
7cc6dbfdf0 | ||
![]() |
e95d67db4b | ||
![]() |
a261f7875a | ||
![]() |
78141f2839 | ||
![]() |
75d23a752c | ||
![]() |
03cc374c54 | ||
![]() |
89f8496bb8 | ||
![]() |
15489b7f10 | ||
![]() |
3a67d00741 | ||
![]() |
d5a0edfd68 | ||
![]() |
1853292b99 | ||
![]() |
f575f95ee2 | ||
![]() |
97146391e8 | ||
![]() |
31af292a47 | ||
![]() |
ac548b58b0 | ||
![]() |
aa6a9a0da8 |
24
Makefile
24
Makefile
@@ -37,11 +37,11 @@ clean: rc clean-artifacts
|
||||
## EVEN RELEASES are AMO RELEASES
|
||||
## ODD RELEASES are SELFHOSTED RELEASES
|
||||
|
||||
MOZ_VERSION=0.114
|
||||
VERSION=0.113
|
||||
MOZ_VERSION=0.132
|
||||
VERSION=0.131
|
||||
|
||||
## INCREMENT THIS EVERY TIME YOU DO A RELEASE
|
||||
LAST_VERSION=0.111.1
|
||||
LAST_VERSION=0.129
|
||||
|
||||
YELLOW=F7E59A
|
||||
ORANGE=FFC56D
|
||||
@@ -96,20 +96,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\": " manifest.json)| \"version\": \"$(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\": " manifest.json)| \"version\": \"$(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\": " 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|7657|7647|g' *.js* torrent/*.js*
|
||||
|
||||
@@ -147,7 +147,10 @@ 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 seed
|
||||
moz-release: release moz-submit
|
||||
#upload-xpi torrent upload-torrent deb upload-deb upload-rss seed
|
||||
|
||||
full-sign: moz-sign upload-xpi torrent upload-torrent deb upload-deb upload-rss seed
|
||||
|
||||
WEB_EXT_API_KEY=AMO_KEY
|
||||
WEB_EXT_API_SECRET=AMO_SECRET
|
||||
@@ -182,7 +185,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
|
||||
$(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
|
||||
$(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; true #--api-url-prefix http://localhost:3000/api/v4
|
||||
sleep 5
|
||||
mv .manifest.json manifest.json
|
||||
|
||||
@@ -284,8 +287,13 @@ fmt-js:
|
||||
fixjsstyle torrent/*.js
|
||||
fixjsstyle i2pcontrol/*.js
|
||||
fixjsstyle manifest.json
|
||||
#work around fixjsstyle issue
|
||||
sed -i 's|= >|=>|g' *.js */*.js
|
||||
#find . -path ./node_modules -prune -o -name '*.json' -exec fixjsstyle --write {} \;
|
||||
|
||||
fmt-locales:
|
||||
find _locales -name '*.js*' -exec $(HOME)/node_modules/.bin/prettier -w {} \;
|
||||
|
||||
fmt-prettier:
|
||||
find . -name '*.js*' -exec $(HOME)/node_modules/.bin/prettier -w {} \;
|
||||
|
||||
|
23
README.md
23
README.md
@@ -2,13 +2,14 @@ I2P in Private Browsing Mode(Firefox-Only)
|
||||
==========================================
|
||||
|
||||
This is an webextension which introduces a set of new "Private Browsing" modes
|
||||
to Firefox-based browsers(Supporting webextensions) that makes it easier to
|
||||
configure a browser to use I2P securely and adds features for making I2P
|
||||
applications easier to use. It does this by isolating I2P-specific settings to
|
||||
Contextual Identities within Firefox, then loading them automatically when the
|
||||
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.
|
||||
to Firefox-based browsers(Supporting webextensions, must be current ESR or
|
||||
greater) that makes it easier to configure a browser to use I2P securely and
|
||||
adds features for making I2P applications easier to use. It does this by
|
||||
isolating I2P-specific settings to Contextual Identities within Firefox, then
|
||||
loading them automatically when the 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 and via in-browser protocol handling
|
||||
integrations.
|
||||
|
||||
Privacy Policy
|
||||
--------------
|
||||
@@ -31,6 +32,14 @@ For desktop users this addon is available from addons.mozilla.org, where you
|
||||
will be able to recive automatic updates:
|
||||
[I2P in Private Browsing](https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/).
|
||||
|
||||
### Setting the Homepage
|
||||
|
||||
The first time you run the extension, Firefox will offer you the option of setting
|
||||
your homepage and new tab page to the homepage contained *within* the extension. You
|
||||
can decline this or edit it later and it will not affect your anonymity. Enabling
|
||||
this feature allows the extension to set your homepage to a local document with a
|
||||
number of useful I2P links.
|
||||
|
||||
Debian Installation:
|
||||
--------------------
|
||||
|
||||
|
322
_locales/ar/messages.json
Normal file
322
_locales/ar/messages.json
Normal file
@@ -0,0 +1,322 @@
|
||||
{
|
||||
"abouthome": {
|
||||
"description": "وصف لصفحة الزر",
|
||||
"message": "وللمزيد من المعلومات عن هذا التمديد، يرجى زيارة هذه الصفحة."
|
||||
},
|
||||
"applicationExplain": {
|
||||
"description": "Description for application section.",
|
||||
"message": "وتعمل هذه التطبيقات مع I2P مباشرة لتزويدها بالأمن والخصوصية."
|
||||
},
|
||||
"applicationHeader": {
|
||||
"description": "رئيس قسم الطلبات",
|
||||
"message": "التطبيقات"
|
||||
},
|
||||
"blogPreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "Blog"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "Blog (Private)"
|
||||
},
|
||||
"botePreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "I2P-Bote Mail"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "I2P-Bote Mail (Private)"
|
||||
},
|
||||
"certAbsent": {
|
||||
"description": "مضمون المعلومات المتعلقة بالشهادة إذا لم يكن هناك",
|
||||
"message": "هذا الموقع لا يستخدم جهاز تحديد المواقع ما زالَ يُتأكّدُ مِنْ المُبْكَرَةِ مِن قِبل I2P."
|
||||
},
|
||||
"certLabel": {
|
||||
"description": "Label for certificate info",
|
||||
"message": "شهادة المعلومات:"
|
||||
},
|
||||
"certPresent": {
|
||||
"description": "مضمون المعلومات المتعلقة بالشهادة إذا كان حاضرا",
|
||||
"message": "هذا الموقعِ يَستعملُ HTTPS. HTTPS over I2P is experimental and requires self-signed certificates or alternate root authorites."
|
||||
},
|
||||
"clearData": {
|
||||
"description": "تصفية قائمة البيانات",
|
||||
"message": "بيانات الحشد:"
|
||||
},
|
||||
"clearDesc": {
|
||||
"description": "مسح وصف إجراءات البيانات.",
|
||||
"message": "إستخدم هذا لمسح بياناتك"
|
||||
},
|
||||
"controlExplain": {
|
||||
"description": "أدخل لوحة التحكم",
|
||||
"message": "هذه الضوابط تُستخدم لتكييف تجربتك في الحشد"
|
||||
},
|
||||
"controlHeader": {
|
||||
"description": "عنوان لوحة التحكم",
|
||||
"message": "الرقابة"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"description": "المساعدة على تشكيل خيارات زر نفق ريست",
|
||||
"message": "إعترفوا بأن مرشدكم هنا"
|
||||
},
|
||||
"controlHostText": {
|
||||
"description": "(مضيف (روتر كونسول",
|
||||
"message": "الجهة المضيفة:"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"description": "(مضيف (روتر كونسول",
|
||||
"message": "127.0.0.1"
|
||||
},
|
||||
"controlPortText": {
|
||||
"description": "Port for the Router Console",
|
||||
"message": "مركز المراقبة:"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"description": "Port for the Router Console",
|
||||
"message": "7657"
|
||||
},
|
||||
"disableHistory": {
|
||||
"description": "بطاقة تدقيق التاريخ",
|
||||
"message": "تاريخ معزول في تابس I2P؟"
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"description": "(ويرتك)",
|
||||
"message": "هل تستطيع أن تُخبر (ويك) بالوكالة؟"
|
||||
},
|
||||
"extensionDescription": {
|
||||
"description": "وصف التمديد.",
|
||||
"message": "منظفك جاهز الآن لإستخدام I2P"
|
||||
},
|
||||
"extensionName": {
|
||||
"description": "اسم التمديد",
|
||||
"message": "I2P In Private Browsing"
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"description": "اسم التمديد",
|
||||
"message": "I2P In Private Browsing - Rhizome Variant"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "I2P Management"
|
||||
},
|
||||
"extensionVersion": {
|
||||
"description": "صورة التمديد",
|
||||
"message": "1.28"
|
||||
},
|
||||
"forumMessage": {
|
||||
"description": "رسالة المساعدة",
|
||||
"message": "زيارة منتدى شركاء التنفيذ لتعلم المزيد أو طلب المساعدة"
|
||||
},
|
||||
"help": {
|
||||
"description": "وصف لصفحة الزر",
|
||||
"message": "وللمزيد من المعلومات عن هذا التمديد، يرجى زيارة هذه الصفحة."
|
||||
},
|
||||
"helpMessage": {
|
||||
"description": "رسالة المساعدة",
|
||||
"message": "الحصول على مساعدة إضافية"
|
||||
},
|
||||
"histDesc": {
|
||||
"description": "وصف الإجراءات التاريخية",
|
||||
"message": "التاريخ يُبرّر تلقائياً عندما تُغلق رسومات I2P الخاصة بك. إذا كنت تريد تصفية التاريخ كما تذهب، تحقق من هذا الصندوق."
|
||||
},
|
||||
"homepage": {
|
||||
"description": "البحث عن المزيد من المعلومات",
|
||||
"message": "هناك المزيد من المعلومات المتاحة هنا"
|
||||
},
|
||||
"hostText": {
|
||||
"description": "المضيف لشركة HTTP أو شركة SOCKS5",
|
||||
"message": "المضيف:"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"description": "Description for i2ptunnel",
|
||||
"message": "I2P has a web-based interface for configuring.i2p services like web sites which you can set up."
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "مدير خدمات مخفي"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "مدير خدمات مخفي )مدير("
|
||||
},
|
||||
"infoMessage": {
|
||||
"description": "رسالة المساعدة",
|
||||
"message": "أنت الآن حرّ لتَغْطّمْ فوق ويب! مصففك الآن مجهز ليتصفح بشكل مجهول على شبكة I2P كما تَتصفحُ، حركة المرور الخاصة بكَ سَتُوجّهُ من خلال عقدِ شبكةِ أخرى لإخفاء هو أصلُ، كِلاً مِنْ الخادمِ و مِنْ العقدِ نفسهِ."
|
||||
},
|
||||
"infoTitle": {
|
||||
"description": "عنوان قائمة المساعدة",
|
||||
"message": "I2P النجدة"
|
||||
},
|
||||
"ircPreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "Dispatch IRC"
|
||||
},
|
||||
"ircPrefacePrivate": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "الهيئة الدولية لمراقبة المخدرات"
|
||||
},
|
||||
"isBase32": {
|
||||
"description": "رسالة إلى قاعدة معلومات الموقع 32",
|
||||
"message": "I2P Base32-Formatted Address"
|
||||
},
|
||||
"isHostName": {
|
||||
"description": "رسالة لاستضافة لوحة معلومات الموقع",
|
||||
"message": "I2P القفزة المضيفة"
|
||||
},
|
||||
"mailPreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "البريد الشبكي"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "البريد الإلكتروني (Private)"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "MuWire"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "مووير (بريفيت)"
|
||||
},
|
||||
"newsMessage": {
|
||||
"description": "رسالة المساعدة",
|
||||
"message": "زيارة I2P اعتذر لتعلم آخر شيء عن (اي2ب)"
|
||||
},
|
||||
"portText": {
|
||||
"description": "Port for the HTTP or SOCKS5 Proxy",
|
||||
"message": "بورت:"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"description": "قيمة معالج بروتوكول المغناطيس",
|
||||
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%saction=Addfoo=Add+torrent"
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"description": "فشل الوكيل",
|
||||
"message": "الوكيل لَيسَ جاهزَ"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"description": "المساعدة على تشكيل خيارات زر نفق ريست",
|
||||
"message": "إعترف بوكيلك هنا"
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"description": "فشل الوكيل",
|
||||
"message": "الوكيل جاهز"
|
||||
},
|
||||
"releases": {
|
||||
"description": "Description for new release page",
|
||||
"message": "تحقق من الإطلاقات الجديدة هنا"
|
||||
},
|
||||
"resetMessage": {
|
||||
"description": "رسالة لزر نفق ريست",
|
||||
"message": "Reset Tunnel"
|
||||
},
|
||||
"routerConsole": {
|
||||
"description": "وصف لجهاز التحكم",
|
||||
"message": "نقطة الدخول لجميع تطبيقات I2P الأخرى هي كونسول I2P لزيارتها، انقر هنا"
|
||||
},
|
||||
"routerPreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "Router Console"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "Router Console (Private)"
|
||||
},
|
||||
"rtcDesc": {
|
||||
"description": "وصف عمل الشبكة",
|
||||
"message": "(ويرتي سي) معوقة بسبب الفشل، لكن يمكنك إعادة تشغيله وإجباره على تكريم العميل. إذا كنت مستعملاً لتمديد \"سنوفليك برووزر\" هذا الخيار معوق و \"ويب آر تي سي\" يتحول إلى عجز"
|
||||
},
|
||||
"siteLabel": {
|
||||
"description": "Label for i2p site info",
|
||||
"message": "العنوان/الموقع:"
|
||||
},
|
||||
"snark": {
|
||||
"description": "Description for Bittorrent",
|
||||
"message": "I2P is capable of anonymous Peer-to-Peer file sharing using the built-in bittorrent application."
|
||||
},
|
||||
"sources": {
|
||||
"description": "Description for the Source code link",
|
||||
"message": "فجر رمز المصدر هنا"
|
||||
},
|
||||
"susimail": {
|
||||
"description": "وصف البريد الإلكتروني",
|
||||
"message": "ويجمع I2P أيضا زبون بريد إلكتروني يمكن استخدامه للوصول إلى البريد الإلكتروني I2P."
|
||||
},
|
||||
"titlePreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "I2P Browser"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "I2P Browser (Private)"
|
||||
},
|
||||
"toopieName": {
|
||||
"description": "اسم الجانب",
|
||||
"message": "أيضاً html"
|
||||
},
|
||||
"toopieTLS": {
|
||||
"description": "اسم فريق الأمن",
|
||||
"message": "Site Properties"
|
||||
},
|
||||
"torPreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "Tor Manager"
|
||||
},
|
||||
"torPrefacePrivate": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "Tor Manager (Private)"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "Bittorrent"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "Bittorrent (Private)"
|
||||
},
|
||||
"webPreface": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "Web Browser"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"description": "وجه لقب المصفح",
|
||||
"message": "بروزر (بريفيت)"
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"description": "(روتر كونسول)",
|
||||
"message": "Router Console:"
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"description": "صفحة مساعدة لعلامة التمديد",
|
||||
"message": "مساعدة الصفحة:"
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"description": "صفحة منزل لعلامة التمديد",
|
||||
"message": "Home Page:"
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"description": "العنوان: i2ptunnel",
|
||||
"message": "مدير الخدمات المخفية:"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"description": "زيارة الصفحة",
|
||||
"message": "إصدارات التمديد:"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"description": "Title for Bittorrent",
|
||||
"message": "بيتيرنت:"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"description": "Title for source code link",
|
||||
"message": "قانون التمديد"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"description": "عنوان البريد الإلكتروني",
|
||||
"message": "E-Mail:"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"description": "صحيفة \" غيثوب \" لتوسيع نطاق الزيارات",
|
||||
"message": "Home Page:"
|
||||
}
|
||||
}
|
322
_locales/de/messages.json
Normal file
322
_locales/de/messages.json
Normal file
@@ -0,0 +1,322 @@
|
||||
{
|
||||
"abouthome": {
|
||||
"description": "Beschreibung für die Schaltfläche Erweiterung.",
|
||||
"message": "Weitere Informationen zu dieser Erweiterung finden Sie auf dieser Seite."
|
||||
},
|
||||
"applicationExplain": {
|
||||
"description": "Beschreibung für Anwendungsbereich.",
|
||||
"message": "Diese Anwendungen arbeiten mit I2P direkt, um ihnen Sicherheit und Privatsphäre zu bieten."
|
||||
},
|
||||
"applicationHeader": {
|
||||
"description": "Header für Anwendungsbereiche.",
|
||||
"message": "Anwendungen"
|
||||
},
|
||||
"blogPreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Blog"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Blog (Privat)"
|
||||
},
|
||||
"botePreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "I2P-Bote Mail"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "I2P-Bote Mail (Private)"
|
||||
},
|
||||
"certAbsent": {
|
||||
"description": "Inhalt für Zertifikatsinfo, wenn abwesend",
|
||||
"message": "Diese Website verwendet nicht HTTPS. Es wird noch kryptographisch von I2P überprüft."
|
||||
},
|
||||
"certLabel": {
|
||||
"description": "Label für Zertifikat Info",
|
||||
"message": "Zertifikat Information:"
|
||||
},
|
||||
"certPresent": {
|
||||
"description": "Inhalt für Zertifikatsinfo, wenn vorhanden",
|
||||
"message": "Diese Website verwendet HTTPS. HTTPS über I2P ist experimentell und erfordert selbstsignierte Zertifikate oder alternative Wurzelautoriten."
|
||||
},
|
||||
"clearData": {
|
||||
"description": "Löschen Sie den Menüpunkt Browserdaten.",
|
||||
"message": "Löschen von Browserdaten:"
|
||||
},
|
||||
"clearDesc": {
|
||||
"description": "Löschen Sie die Daten Aktion Beschreibung.",
|
||||
"message": "Verwenden Sie dies, um Ihre I2P-Browserdaten zu löschen."
|
||||
},
|
||||
"controlExplain": {
|
||||
"description": "Schalttafel einführen.",
|
||||
"message": "Diese Steuerungen werden verwendet, um Ihre I2P Browsing Experience zuzuschneiden"
|
||||
},
|
||||
"controlHeader": {
|
||||
"description": "Headline für Bedienfeld.",
|
||||
"message": "Steuerung"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"description": "Hilfe zur Konfiguration der Optionen für den Reset Tunnel Button",
|
||||
"message": "Konfigurieren Sie hier Ihre Router-Konsole."
|
||||
},
|
||||
"controlHostText": {
|
||||
"description": "Host für die Router-Konsole",
|
||||
"message": "Kontroll Host:"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"description": "Host für die Router-Konsole",
|
||||
"message": "127.0.0.1"
|
||||
},
|
||||
"controlPortText": {
|
||||
"description": "Hafen für die Router-Konsole",
|
||||
"message": "Kontrollhafen:"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"description": "Hafen für die Router-Konsole",
|
||||
"message": "7657"
|
||||
},
|
||||
"disableHistory": {
|
||||
"description": "History Checkbox Label.",
|
||||
"message": "Die Geschichte in I2P Tabs deaktivieren?"
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"description": "WebRTC-Checkbox-Label.",
|
||||
"message": "WebRTC mit Proxy aktivieren?"
|
||||
},
|
||||
"extensionDescription": {
|
||||
"description": "Beschreibung der Erweiterung.",
|
||||
"message": "Ihr Browser ist nun eingerichtet, um I2P zu verwenden."
|
||||
},
|
||||
"extensionName": {
|
||||
"description": "Name der Erweiterung.",
|
||||
"message": "I2P Im privaten Browsing"
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"description": "Name der Erweiterung.",
|
||||
"message": "I2P In Private Browsing - Rhizome Variant"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "I2P Management"
|
||||
},
|
||||
"extensionVersion": {
|
||||
"description": "Ausführung der Erweiterung.",
|
||||
"message": "1.28"
|
||||
},
|
||||
"forumMessage": {
|
||||
"description": "Hilfe",
|
||||
"message": "Besuchen Sie das I2P Forum, um mehr zu erfahren oder um Hilfe zu bitten"
|
||||
},
|
||||
"help": {
|
||||
"description": "Beschreibung für die Schaltfläche Erweiterung.",
|
||||
"message": "Weitere Informationen zu dieser Erweiterung finden Sie auf dieser Seite."
|
||||
},
|
||||
"helpMessage": {
|
||||
"description": "Hilfe",
|
||||
"message": "Zusätzliche Hilfe"
|
||||
},
|
||||
"histDesc": {
|
||||
"description": "Beschreibung der Geschichte",
|
||||
"message": "Die Geschichte wird automatisch gelöscht, wenn Ihre I2P Tabs geschlossen sind. Wenn Sie die Geschichte wie Sie gehen, überprüfen Sie diese Box."
|
||||
},
|
||||
"homepage": {
|
||||
"description": "Weitere Informationen",
|
||||
"message": "Weitere Informationen finden Sie hier"
|
||||
},
|
||||
"hostText": {
|
||||
"description": "Host für das HTTP oder SOCKS5 Proxy",
|
||||
"message": "Host:"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"description": "Beschreibung für i2ptunnel",
|
||||
"message": "I2P verfügt über eine webbasierte Schnittstelle zur Konfiguration von .i2p-Diensten wie Websites, die Sie einrichten können."
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Hidden Services Manager"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Hidden Services Manager (Private)"
|
||||
},
|
||||
"infoMessage": {
|
||||
"description": "Hilfe",
|
||||
"message": "Sie sind jetzt frei, das eepWeb zu durchsuchen! Ihr Browser ist nun dazu konfiguriert, anonym auf dem I2P-Netzwerk zu surfen. Beim Durchsuchen wird Ihr Traffic über andere Netzknoten geleitet, um seinen Ursprung zu verbergen, sowohl vom Server als auch von den Knoten selbst."
|
||||
},
|
||||
"infoTitle": {
|
||||
"description": "Titel für das Hilfemenü",
|
||||
"message": "I2P Hilfe"
|
||||
},
|
||||
"ircPreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Versand IRC"
|
||||
},
|
||||
"ircPrefacePrivate": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Versand IRC (Private)"
|
||||
},
|
||||
"isBase32": {
|
||||
"description": "Nachricht für Site Info Panel base32",
|
||||
"message": "I2P Base32-Formatierte Adresse"
|
||||
},
|
||||
"isHostName": {
|
||||
"description": "Nachricht für die Website Info Panel Hostname",
|
||||
"message": "I2P Vorheriger Hostname"
|
||||
},
|
||||
"mailPreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Web Mail"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Web Mail (Privat)"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "MuWire"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "MuWire (Privat)"
|
||||
},
|
||||
"newsMessage": {
|
||||
"description": "Hilfe",
|
||||
"message": "Besuchen Sie die I2P Blog, um das neueste über i2p zu erfahren."
|
||||
},
|
||||
"portText": {
|
||||
"description": "Port für das HTTP oder SOCKS5 Proxy",
|
||||
"message": "Hafen:"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"description": "Wert für den Magnetprotokoll-Handler",
|
||||
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s\u0026action=Add\u0026foo=Add+torrent"
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"description": "Proxy hat den Status versagt.",
|
||||
"message": "Proxy ist nicht bereit"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"description": "Hilfe zur Konfiguration der Optionen für den Reset Tunnel Button",
|
||||
"message": "Konfigurieren Sie Ihren I2P-Proxy hier."
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"description": "Proxy hat den Status versagt.",
|
||||
"message": "Proxy ist bereit"
|
||||
},
|
||||
"releases": {
|
||||
"description": "Beschreibung für neue Release-Seite",
|
||||
"message": "Hier finden Sie neue Releases"
|
||||
},
|
||||
"resetMessage": {
|
||||
"description": "Nachricht für den Reset Tunnel Knopf",
|
||||
"message": "Zurück zur Übersicht"
|
||||
},
|
||||
"routerConsole": {
|
||||
"description": "Beschreibung für die Router-Konsole.",
|
||||
"message": "Der Ausgangspunkt für alle anderen I2P-Anwendungen ist die I2P Router Console. Um es zu besuchen, klicken Sie hier."
|
||||
},
|
||||
"routerPreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Router Console"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Router Console (Private)"
|
||||
},
|
||||
"rtcDesc": {
|
||||
"description": "WebRTC Aktionsbeschreibung",
|
||||
"message": "WebRTC ist standardmäßig deaktiviert, aber Sie können es wieder einschalten und zwingen, die Proxy zu ehren. Wenn Sie ein Benutzer der Snowflake Browser-Erweiterung sind, ist diese Option deaktiviert und WebRTC wird standardmäßig eingeschaltet."
|
||||
},
|
||||
"siteLabel": {
|
||||
"description": "Label für i2p Site Info",
|
||||
"message": "Anschrift/Site Information:"
|
||||
},
|
||||
"snark": {
|
||||
"description": "Beschreibung für Bittorrent",
|
||||
"message": "I2P ist in der Lage, anonyme Peer-to-Peer-Datei mit der eingebauten Bittorrent-Anwendung zu teilen."
|
||||
},
|
||||
"sources": {
|
||||
"description": "Beschreibung des Quellcode-Links",
|
||||
"message": "Hier den Quellcode durchsuchen"
|
||||
},
|
||||
"susimail": {
|
||||
"description": "Beschreibung für E-Mail",
|
||||
"message": "I2P bündelt auch einen Webmail-Client, der zum Zugriff auf in-I2P-E-Mail verwendet werden kann."
|
||||
},
|
||||
"titlePreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "I2P Browser"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "I2P Browser (Privat)"
|
||||
},
|
||||
"toopieName": {
|
||||
"description": "Name der Seitenleiste.",
|
||||
"message": "auch. html"
|
||||
},
|
||||
"toopieTLS": {
|
||||
"description": "Name des Sicherheitspanels.",
|
||||
"message": "Site Properties"
|
||||
},
|
||||
"torPreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Tor Manager"
|
||||
},
|
||||
"torPrefacePrivate": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Tor Manager (Private)"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "In den Warenkorb"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Bittorrent (Privat)"
|
||||
},
|
||||
"webPreface": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Web Browser"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"description": "Vorwort für die Browser-Titelleiste",
|
||||
"message": "Web Browser (Private)"
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"description": "Router Console Label.",
|
||||
"message": "Router Console:"
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"description": "Hilfeseite für das Erweiterungslabel.",
|
||||
"message": "Hilfeseite:"
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"description": "Startseite für das Erweiterungslabel.",
|
||||
"message": "Startseite:"
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"description": "Titel für i2ptunnel",
|
||||
"message": "Hidden Services Manager:"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"description": "Besuchen Sie die Veröffentlichungsseite",
|
||||
"message": "Erweiterung:"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"description": "Titel für Bittorrent",
|
||||
"message": "Bittorrent:"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"description": "Titel für Quellcode-Link",
|
||||
"message": "Code der Erweiterung:"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"description": "Titel für E-Mail",
|
||||
"message": "E-Mail:"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"description": "Besuchen Sie die Erweiterung Homepage auf Github",
|
||||
"message": "Startseite:"
|
||||
}
|
||||
}
|
@@ -1,314 +1,322 @@
|
||||
{
|
||||
"extensionName": {
|
||||
"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."
|
||||
},
|
||||
"toopieTLS": {
|
||||
"message": "Site Properties",
|
||||
"description": "Name of the security panel."
|
||||
},
|
||||
"extensionDescription": {
|
||||
"message": "Your browser is now set up to use I2P.",
|
||||
"description": "Description of the extension."
|
||||
},
|
||||
"extensionVersion": {
|
||||
"message": "0.108",
|
||||
"description": "Version of the extension."
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"message": "Proxy is not ready",
|
||||
"description": "Proxy failed status."
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"message": "Proxy is ready",
|
||||
"description": "Proxy failed status."
|
||||
},
|
||||
"controlHeader": {
|
||||
"message": "Control",
|
||||
"description": "Headline for control panel."
|
||||
},
|
||||
"controlExplain": {
|
||||
"message": "These controls are used to tailor your I2P Browsing Experience",
|
||||
"description": "Introduce the control panel."
|
||||
},
|
||||
"clearData": {
|
||||
"message": "Clear Browsing Data: ",
|
||||
"description": "Clear Browsing Data menu item."
|
||||
},
|
||||
"clearDesc": {
|
||||
"message": "Use this to erase your I2P browsing data.",
|
||||
"description": "Clear browsing data action description."
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"message": "Enable WebRTC with proxy?",
|
||||
"description": "WebRTC checkbox label."
|
||||
},
|
||||
"rtcDesc": {
|
||||
"message": "WebRTC is disabled by default, but you can turn it back on and force it to honor the proxy. If you are a user of the Snowflake browser extension, this option is disabled and WebRTC is turned on by default.",
|
||||
"description": "WebRTC action description"
|
||||
},
|
||||
"disableHistory": {
|
||||
"message": "Disable History in I2P Tabs?",
|
||||
"description": "History checkbox label."
|
||||
},
|
||||
"histDesc": {
|
||||
"message": "History is automatically cleared when your I2P tabs are closed. If you want to clear history as you go, check this box.",
|
||||
"description": "History action description"
|
||||
},
|
||||
"applicationHeader": {
|
||||
"message": "Applications",
|
||||
"description": "Header for applications section."
|
||||
},
|
||||
"applicationExplain": {
|
||||
"message": "These applications work with I2P directly to provide them with security and privacy.",
|
||||
"description": "Description for application section."
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"message": "Router Console: ",
|
||||
"description": "Router Console label."
|
||||
},
|
||||
"routerConsole": {
|
||||
"message": "The entrypoint for all other I2P applications is the I2P Router Console. To visit it, click here.",
|
||||
"description": "Description for the router console."
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"message": "Home Page: ",
|
||||
"description": "Home page for the extension label."
|
||||
},
|
||||
"abouthome": {
|
||||
"message": "For more information about this extension, visit this page.",
|
||||
"description": "Description for the extension button page."
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"message": "Help Page: ",
|
||||
"description": "Help page for the extension label."
|
||||
},
|
||||
"help": {
|
||||
"message": "For more information about this extension, visit this page.",
|
||||
"description": "Description for the extension button page."
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"message": "Hidden Services Manager: ",
|
||||
"description": "Title for i2ptunnel"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"message": "I2P has a web-based interface for configuring .i2p services like web sites which you can set up.",
|
||||
"description": "Description for i2ptunnel"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"message": "E-Mail: ",
|
||||
"description": "Title for e-mail"
|
||||
},
|
||||
"susimail": {
|
||||
"message": "I2P also bundles a webmail client which can be used to access in-I2P e-mail.",
|
||||
"description": "Description for e-mail"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"message": "Bittorrent: ",
|
||||
"description": "Title for Bittorrent"
|
||||
},
|
||||
"snark": {
|
||||
"message": "I2P is capable of anonymous Peer-to-Peer file sharing using the built-in bittorrent application.",
|
||||
"description": "Description for Bittorrent"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"message": "Extension Source Code: ",
|
||||
"description": "Title for source code link"
|
||||
},
|
||||
"sources": {
|
||||
"message": "Browse the source code here",
|
||||
"description": "Description for the Source code link"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"message": "Extension Home Page: ",
|
||||
"description": "Visit extension homepage on Github"
|
||||
},
|
||||
"homepage": {
|
||||
"message": "More information is available here",
|
||||
"description": "Find more information"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"message": "Extension Releases: ",
|
||||
"description": "Visit the release page"
|
||||
},
|
||||
"releases": {
|
||||
"message": "Check for new releases here",
|
||||
"description": "Description for new release page"
|
||||
},
|
||||
"titlePreface": {
|
||||
"message": "I2P Browser",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"message": "I2P Browser (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"message": "I2P Management",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"webPreface": {
|
||||
"message": "Web Browser",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"message": "Web Browser (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"ircPreface": {
|
||||
"message": "Dispatch IRC",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"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": {
|
||||
"message": "Router Console",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"message": "Router Console (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"message": "Bittorrent",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"message": "Bittorrent (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"mailPreface": {
|
||||
"message": "Web Mail",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"message": "Web Mail (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"message": "Hidden Services Manager",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"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"
|
||||
},
|
||||
"infoTitle": {
|
||||
"message": "I2P Help",
|
||||
"description": "Title for the help menu"
|
||||
},
|
||||
"infoMessage": {
|
||||
"message": "You are now free to browse the eepWeb! Your browser is now configured to browse anonymously on the I2P network. As you browse, your traffic will be routed through other network nodes to disguise it's origin, both from the server and from the nodes themselves.",
|
||||
"description": "Help Message"
|
||||
},
|
||||
"helpMessage": {
|
||||
"message": "Get additional help",
|
||||
"description": "Help Message"
|
||||
},
|
||||
"newsMessage": {
|
||||
"message": "Visit the I2P Blog to learn the latest about i2p.",
|
||||
"description": "Help Message"
|
||||
},
|
||||
"forumMessage": {
|
||||
"message": "Visit the I2P Forum to learn more or ask for assistance",
|
||||
"description": "Help Message"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"message": "Configure your I2P proxy here.",
|
||||
"description": "Help for configuring the options for the Reset Tunnel button"
|
||||
},
|
||||
"hostText": {
|
||||
"message": "Host: ",
|
||||
"description": "Host for the HTTP or SOCKS5 Proxy"
|
||||
},
|
||||
"portText": {
|
||||
"message": "Port: ",
|
||||
"description": "Port for the HTTP or SOCKS5 Proxy"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"message": "Configure your router console here.",
|
||||
"description": "Help for configuring the options for the Reset Tunnel button"
|
||||
},
|
||||
"controlHostText": {
|
||||
"message": "Control Host: ",
|
||||
"description": "Host for the Router Console"
|
||||
},
|
||||
"controlPortText": {
|
||||
"message": "Control Port: ",
|
||||
"description": "Port for the Router Console"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"message": "127.0.0.1",
|
||||
"description": "Host for the Router Console"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"message": "7657",
|
||||
"description": "Port for the Router Console"
|
||||
},
|
||||
"isBase32": {
|
||||
"message": "I2P Base32-Formatted Address",
|
||||
"description": "Message for site info panel base32"
|
||||
},
|
||||
"isHostName": {
|
||||
"message": "I2P Jump Hostname",
|
||||
"description": "Message for the site info panel hostname"
|
||||
},
|
||||
"siteLabel": {
|
||||
"message": "Address/Site Information:",
|
||||
"description": "Label for i2p site info"
|
||||
},
|
||||
"certLabel": {
|
||||
"message": "Certificate Information:",
|
||||
"description": "Label for certificate info"
|
||||
},
|
||||
"certAbsent": {
|
||||
"message": "This site is not using HTTPS. It is still verified cryptographically by I2P.",
|
||||
"description": "Content for certificate info if absent"
|
||||
},
|
||||
"certPresent": {
|
||||
"message": "This site is using HTTPS. HTTPS over I2P is experimental and requires self-signed certificates or alternate root authorites.",
|
||||
"description": "Content for certificate info if present"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s&action=Add&foo=Add+torrent",
|
||||
"description": "Value for the magnet protocol handler"
|
||||
}
|
||||
}
|
||||
"extensionName": {
|
||||
"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."
|
||||
},
|
||||
"toopieTLS": {
|
||||
"message": "Site Properties",
|
||||
"description": "Name of the security panel."
|
||||
},
|
||||
"extensionDescription": {
|
||||
"message": "Your browser is now set up to use I2P.",
|
||||
"description": "Description of the extension."
|
||||
},
|
||||
"extensionVersion": {
|
||||
"message": "1.28",
|
||||
"description": "Version of the extension."
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"message": "Proxy is not ready",
|
||||
"description": "Proxy failed status."
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"message": "Proxy is ready",
|
||||
"description": "Proxy failed status."
|
||||
},
|
||||
"controlHeader": {
|
||||
"message": "Control",
|
||||
"description": "Headline for control panel."
|
||||
},
|
||||
"controlExplain": {
|
||||
"message": "These controls are used to tailor your I2P Browsing Experience",
|
||||
"description": "Introduce the control panel."
|
||||
},
|
||||
"clearData": {
|
||||
"message": "Clear Browsing Data: ",
|
||||
"description": "Clear Browsing Data menu item."
|
||||
},
|
||||
"clearDesc": {
|
||||
"message": "Use this to erase your I2P browsing data.",
|
||||
"description": "Clear browsing data action description."
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"message": "Enable WebRTC with proxy?",
|
||||
"description": "WebRTC checkbox label."
|
||||
},
|
||||
"rtcDesc": {
|
||||
"message": "WebRTC is disabled by default, but you can turn it back on and force it to honor the proxy. If you are a user of the Snowflake browser extension, this option is disabled and WebRTC is turned on by default.",
|
||||
"description": "WebRTC action description"
|
||||
},
|
||||
"disableHistory": {
|
||||
"message": "Disable History in I2P Tabs?",
|
||||
"description": "History checkbox label."
|
||||
},
|
||||
"histDesc": {
|
||||
"message": "History is automatically cleared when your I2P tabs are closed. If you want to clear history as you go, check this box.",
|
||||
"description": "History action description"
|
||||
},
|
||||
"applicationHeader": {
|
||||
"message": "Applications",
|
||||
"description": "Header for applications section."
|
||||
},
|
||||
"applicationExplain": {
|
||||
"message": "These applications work with I2P directly to provide them with security and privacy.",
|
||||
"description": "Description for application section."
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"message": "Router Console: ",
|
||||
"description": "Router Console label."
|
||||
},
|
||||
"routerConsole": {
|
||||
"message": "The entrypoint for all other I2P applications is the I2P Router Console. To visit it, click here.",
|
||||
"description": "Description for the router console."
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"message": "Home Page: ",
|
||||
"description": "Home page for the extension label."
|
||||
},
|
||||
"abouthome": {
|
||||
"message": "For more information about this extension, visit this page.",
|
||||
"description": "Description for the extension button page."
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"message": "Help Page: ",
|
||||
"description": "Help page for the extension label."
|
||||
},
|
||||
"help": {
|
||||
"message": "For more information about this extension, visit this page.",
|
||||
"description": "Description for the extension button page."
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"message": "Hidden Services Manager: ",
|
||||
"description": "Title for i2ptunnel"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"message": "I2P has a web-based interface for configuring .i2p services like web sites which you can set up.",
|
||||
"description": "Description for i2ptunnel"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"message": "E-Mail: ",
|
||||
"description": "Title for e-mail"
|
||||
},
|
||||
"susimail": {
|
||||
"message": "I2P also bundles a webmail client which can be used to access in-I2P e-mail.",
|
||||
"description": "Description for e-mail"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"message": "Bittorrent: ",
|
||||
"description": "Title for Bittorrent"
|
||||
},
|
||||
"snark": {
|
||||
"message": "I2P is capable of anonymous Peer-to-Peer file sharing using the built-in bittorrent application.",
|
||||
"description": "Description for Bittorrent"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"message": "Extension Source Code: ",
|
||||
"description": "Title for source code link"
|
||||
},
|
||||
"sources": {
|
||||
"message": "Browse the source code here",
|
||||
"description": "Description for the Source code link"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"message": "Extension Home Page: ",
|
||||
"description": "Visit extension homepage on Github"
|
||||
},
|
||||
"homepage": {
|
||||
"message": "More information is available here",
|
||||
"description": "Find more information"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"message": "Extension Releases: ",
|
||||
"description": "Visit the release page"
|
||||
},
|
||||
"releases": {
|
||||
"message": "Check for new releases here",
|
||||
"description": "Description for new release page"
|
||||
},
|
||||
"titlePreface": {
|
||||
"message": "I2P Browser",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"message": "I2P Browser (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"message": "I2P Management",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"webPreface": {
|
||||
"message": "Web Browser",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"message": "Web Browser (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"ircPreface": {
|
||||
"message": "Dispatch IRC",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"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": {
|
||||
"message": "Router Console",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"message": "Router Console (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"message": "Bittorrent",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"message": "Bittorrent (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"mailPreface": {
|
||||
"message": "Web Mail",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"message": "Web Mail (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"message": "Hidden Services Manager",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"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"
|
||||
},
|
||||
"torPreface": {
|
||||
"message": "Tor Manager",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"torPrefacePrivate": {
|
||||
"message": "Tor Manager (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"resetMessage": {
|
||||
"message": "Reset Tunnel",
|
||||
"description": "Message for the Reset Tunnel button"
|
||||
},
|
||||
"infoTitle": {
|
||||
"message": "I2P Help",
|
||||
"description": "Title for the help menu"
|
||||
},
|
||||
"infoMessage": {
|
||||
"message": "You are now free to browse the eepWeb! Your browser is now configured to browse anonymously on the I2P network. As you browse, your traffic will be routed through other network nodes to disguise it's origin, both from the server and from the nodes themselves.",
|
||||
"description": "Help Message"
|
||||
},
|
||||
"helpMessage": {
|
||||
"message": "Get additional help",
|
||||
"description": "Help Message"
|
||||
},
|
||||
"newsMessage": {
|
||||
"message": "Visit the I2P Blog to learn the latest about i2p.",
|
||||
"description": "Help Message"
|
||||
},
|
||||
"forumMessage": {
|
||||
"message": "Visit the I2P Forum to learn more or ask for assistance",
|
||||
"description": "Help Message"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"message": "Configure your I2P proxy here.",
|
||||
"description": "Help for configuring the options for the Reset Tunnel button"
|
||||
},
|
||||
"hostText": {
|
||||
"message": "Host: ",
|
||||
"description": "Host for the HTTP or SOCKS5 Proxy"
|
||||
},
|
||||
"portText": {
|
||||
"message": "Port: ",
|
||||
"description": "Port for the HTTP or SOCKS5 Proxy"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"message": "Configure your router console here.",
|
||||
"description": "Help for configuring the options for the Reset Tunnel button"
|
||||
},
|
||||
"controlHostText": {
|
||||
"message": "Control Host: ",
|
||||
"description": "Host for the Router Console"
|
||||
},
|
||||
"controlPortText": {
|
||||
"message": "Control Port: ",
|
||||
"description": "Port for the Router Console"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"message": "127.0.0.1",
|
||||
"description": "Host for the Router Console"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"message": "7657",
|
||||
"description": "Port for the Router Console"
|
||||
},
|
||||
"isBase32": {
|
||||
"message": "I2P Base32-Formatted Address",
|
||||
"description": "Message for site info panel base32"
|
||||
},
|
||||
"isHostName": {
|
||||
"message": "I2P Jump Hostname",
|
||||
"description": "Message for the site info panel hostname"
|
||||
},
|
||||
"siteLabel": {
|
||||
"message": "Address/Site Information:",
|
||||
"description": "Label for i2p site info"
|
||||
},
|
||||
"certLabel": {
|
||||
"message": "Certificate Information:",
|
||||
"description": "Label for certificate info"
|
||||
},
|
||||
"certAbsent": {
|
||||
"message": "This site is not using HTTPS. It is still verified cryptographically by I2P.",
|
||||
"description": "Content for certificate info if absent"
|
||||
},
|
||||
"certPresent": {
|
||||
"message": "This site is using HTTPS. HTTPS over I2P is experimental and requires self-signed certificates or alternate root authorites.",
|
||||
"description": "Content for certificate info if present"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s&action=Add&foo=Add+torrent",
|
||||
"description": "Value for the magnet protocol handler"
|
||||
}
|
||||
}
|
@@ -1,314 +1,322 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
"abouthome": {
|
||||
"description": "Descripción para la página de botón de extensión.",
|
||||
"message": "Para obtener más información sobre esta extensión, visite esta página."
|
||||
},
|
||||
"applicationExplain": {
|
||||
"description": "Descripción para sección de aplicación.",
|
||||
"message": "Estas aplicaciones trabajan con I2P directamente para proporcionarles seguridad y privacidad."
|
||||
},
|
||||
"applicationHeader": {
|
||||
"description": "Header for applications section.",
|
||||
"message": "Aplicaciones"
|
||||
},
|
||||
"blogPreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Blog"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Blog (Privada)"
|
||||
},
|
||||
"botePreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "I2P-Bote Mail"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "I2P-Bote Mail (Privado)"
|
||||
},
|
||||
"certAbsent": {
|
||||
"description": "Contenido para información de certificado si ausente",
|
||||
"message": "Este sitio no está utilizando HTTPS. Todavía está verificada criptográficamente por I2P."
|
||||
},
|
||||
"certLabel": {
|
||||
"description": "Etiquetas para información de certificado",
|
||||
"message": "Información del certificado:"
|
||||
},
|
||||
"certPresent": {
|
||||
"description": "Contenido para información de certificados si está presente",
|
||||
"message": "Este sitio está utilizando HTTPS. HTTPS sobre I2P es experimental y requiere certificados auto-firmados o autoritas de raíz alternativa."
|
||||
},
|
||||
"clearData": {
|
||||
"description": "Borrar el menú de datos de navegación.",
|
||||
"message": "Datos claros de navegación:"
|
||||
},
|
||||
"clearDesc": {
|
||||
"description": "Descripción clara de la acción de datos de navegación.",
|
||||
"message": "Utilice esto para borrar sus datos de navegación I2P."
|
||||
},
|
||||
"controlExplain": {
|
||||
"description": "Introduce el panel de control.",
|
||||
"message": "Estos controles se utilizan para adaptar su experiencia de navegación I2P"
|
||||
},
|
||||
"controlHeader": {
|
||||
"description": "Directo para panel de control.",
|
||||
"message": "Control"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"description": "Ayuda para configurar las opciones del botón Reset Tunnel",
|
||||
"message": "Configure su consola de router aquí."
|
||||
},
|
||||
"controlHostText": {
|
||||
"description": "Host for the Router Console",
|
||||
"message": "Control Host:"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"description": "Host for the Router Console",
|
||||
"message": "127.0.0.1"
|
||||
},
|
||||
"controlPortText": {
|
||||
"description": "Puerto para la consola Router",
|
||||
"message": "Puerto de control:"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"description": "Puerto para la consola Router",
|
||||
"message": "7657"
|
||||
},
|
||||
"disableHistory": {
|
||||
"description": "Etiquetas de la caja de verificación de historia.",
|
||||
"message": "Historia deshabilitación en pestañas I2P?"
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"description": "Etiquetas de la casilla de verificación WebRTC.",
|
||||
"message": "¿Habilitar WebRTC con proxy?"
|
||||
},
|
||||
"extensionDescription": {
|
||||
"description": "Descripción de la extensión.",
|
||||
"message": "Su navegador ahora está establecido para utilizar I2P."
|
||||
},
|
||||
"extensionName": {
|
||||
"description": "Nombre de la extensión.",
|
||||
"message": "I2P En Cuervos Privados"
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"description": "Nombre de la extensión.",
|
||||
"message": "I2P en la navegación privada - Variante de Rhizome"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "I2P Management"
|
||||
},
|
||||
"extensionVersion": {
|
||||
"description": "Versión de la extensión.",
|
||||
"message": "1.28"
|
||||
},
|
||||
"forumMessage": {
|
||||
"description": "Mensaje de ayuda",
|
||||
"message": "Visite el Foro I2P para aprender más o pedir asistencia"
|
||||
},
|
||||
"help": {
|
||||
"description": "Descripción para la página de botón de extensión.",
|
||||
"message": "Para obtener más información sobre esta extensión, visite esta página."
|
||||
},
|
||||
"helpMessage": {
|
||||
"description": "Mensaje de ayuda",
|
||||
"message": "Obtener ayuda adicional"
|
||||
},
|
||||
"histDesc": {
|
||||
"description": "Descripción de la acción de la historia",
|
||||
"message": "La historia se limpia automáticamente cuando las pestañas I2P están cerradas. Si quieres aclarar la historia mientras vas, compruebe esta caja."
|
||||
},
|
||||
"homepage": {
|
||||
"description": "Encontrar más información",
|
||||
"message": "Más información está disponible aquí"
|
||||
},
|
||||
"hostText": {
|
||||
"description": "Host for the HTTP or SOCKS5 Proxy",
|
||||
"message": "Host:"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"description": "Descripción para i2ptunnel",
|
||||
"message": "I2P tiene una interfaz web para configurar servicios .i2p como sitios web que puede configurar."
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Hidden Services Manager"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Hidden Services Manager (Private)"
|
||||
},
|
||||
"infoMessage": {
|
||||
"description": "Mensaje de ayuda",
|
||||
"message": "¡Ahora eres libre de navegar por el eepWeb! Su navegador ahora está configurado para navegar de forma anónima en la red I2P. Mientras navega, su tráfico será enrutado a través de otros nodos de red para ocultar su origen, tanto desde el servidor como desde los propios nodos."
|
||||
},
|
||||
"infoTitle": {
|
||||
"description": "Título para el menú de ayuda",
|
||||
"message": "I2P Ayuda"
|
||||
},
|
||||
"ircPreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Dispatch IRC"
|
||||
},
|
||||
"ircPrefacePrivate": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Dispatch IRC (Private)"
|
||||
},
|
||||
"isBase32": {
|
||||
"description": "Mensaje para la base del panel info del sitio32",
|
||||
"message": "Dirección I2P Base32-Formatted"
|
||||
},
|
||||
"isHostName": {
|
||||
"description": "Mensaje para el nombre de host del panel info site",
|
||||
"message": "I2P Jump Hostname"
|
||||
},
|
||||
"mailPreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Web Mail"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Web Mail (Privada)"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "MuWire"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "MuWire (Privada)"
|
||||
},
|
||||
"newsMessage": {
|
||||
"description": "Mensaje de ayuda",
|
||||
"message": "Visita el I2P Blog para aprender lo último sobre i2p."
|
||||
},
|
||||
"portText": {
|
||||
"description": "Puerto para HTTP o SOCKS5 Proxy",
|
||||
"message": "Puerto:"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"description": "Valor para el controlador de protocolo magnético",
|
||||
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s implicaaction=Add coinfoo=Add+torrent"
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"description": "Estado fallido.",
|
||||
"message": "Proxy no está listo"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"description": "Ayuda para configurar las opciones del botón Reset Tunnel",
|
||||
"message": "Configure su proxy I2P aquí."
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"description": "Estado fallido.",
|
||||
"message": "Proxy está listo"
|
||||
},
|
||||
"releases": {
|
||||
"description": "Descripción para nueva página de lanzamiento",
|
||||
"message": "Comprueba nuevos lanzamientos aquí"
|
||||
},
|
||||
"resetMessage": {
|
||||
"description": "Mensaje para el botón Reset",
|
||||
"message": "Reiniciar el túnel"
|
||||
},
|
||||
"routerConsole": {
|
||||
"description": "Descripción para la consola del router.",
|
||||
"message": "El punto de entrada para todas las demás aplicaciones I2P es la consola de router I2P. Para visitarlo, haga clic aquí."
|
||||
},
|
||||
"routerPreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Router Console"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Router Console (Privada)"
|
||||
},
|
||||
"rtcDesc": {
|
||||
"description": "Descripción de la acción WebRTC",
|
||||
"message": "WebRTC está deshabilitado por defecto, pero puede activarlo y forzarlo a honrar al proxy. Si usted es un usuario de la extensión del navegador Snowflake, esta opción está deshabilitada y WebRTC se activa por defecto."
|
||||
},
|
||||
"siteLabel": {
|
||||
"description": "Etiquetas para el sitio i2p info",
|
||||
"message": "Address/Site Information:"
|
||||
},
|
||||
"snark": {
|
||||
"description": "Descripción para Bittorrent",
|
||||
"message": "I2P es capaz de compartir archivos Peer-to-Peer anónimos utilizando la aplicación bittorrent integrada."
|
||||
},
|
||||
"sources": {
|
||||
"description": "Descripción para el enlace de código fuente",
|
||||
"message": "Examine el código fuente aquí"
|
||||
},
|
||||
"susimail": {
|
||||
"description": "Descripción para e-mail",
|
||||
"message": "I2P también agrupa a un cliente de correo web que se puede utilizar para acceder al correo electrónico en I2P."
|
||||
},
|
||||
"titlePreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Navegador I2P"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Navegador I2P (Privado)"
|
||||
},
|
||||
"toopieName": {
|
||||
"description": "Nombre de la barra lateral.",
|
||||
"message": "también. html"
|
||||
},
|
||||
"toopieTLS": {
|
||||
"description": "Nombre del panel de seguridad.",
|
||||
"message": "Propiedades del sitio"
|
||||
},
|
||||
"torPreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Tor Manager"
|
||||
},
|
||||
"torPrefacePrivate": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Tor Manager (Private)"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Bittorrent"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Bittorrent (Private)"
|
||||
},
|
||||
"webPreface": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Web Browser"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"description": "Prefacio para la barra de título del navegador",
|
||||
"message": "Web Browser (Privada)"
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"description": "Consola Router.",
|
||||
"message": "Consola Router:"
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"description": "Ayuda página para la etiqueta de extensión.",
|
||||
"message": "Página de ayuda:"
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"description": "Página principal para la etiqueta de extensión.",
|
||||
"message": "Página principal:"
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"description": "Título para i2ptunnel",
|
||||
"message": "Administrador de servicios ocultos:"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"description": "Visita la página de lanzamiento",
|
||||
"message": "Extension Releases:"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"description": "Título para Bittorrent",
|
||||
"message": "Bittorrent:"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"description": "Título del enlace de código fuente",
|
||||
"message": "Código fuente de extensión:"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"description": "Título del correo electrónico",
|
||||
"message": "E-Mail:"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"description": "Visita la página principal de extensión en Github",
|
||||
"message": "Extension Home Page:"
|
||||
}
|
||||
}
|
322
_locales/fr/messages.json
Normal file
322
_locales/fr/messages.json
Normal file
@@ -0,0 +1,322 @@
|
||||
{
|
||||
"abouthome": {
|
||||
"description": "Description pour la page du bouton d'extension.",
|
||||
"message": "Pour plus d'informations sur cette extension, visitez cette page."
|
||||
},
|
||||
"applicationExplain": {
|
||||
"description": "Description pour la section de demande.",
|
||||
"message": "Ces applications travaillent directement avec I2P pour leur assurer la sécurité et la confidentialité."
|
||||
},
|
||||
"applicationHeader": {
|
||||
"description": "Header for applications section.",
|
||||
"message": "Applications"
|
||||
},
|
||||
"blogPreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Blog"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Blog (Private)"
|
||||
},
|
||||
"botePreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "I2P-Bote Mail"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "I2P-Bote Mail (Private)"
|
||||
},
|
||||
"certAbsent": {
|
||||
"description": "Contenu de l'information de certificat si absent",
|
||||
"message": "Ce site n'utilise pas HTTPS. Il est encore vérifié cryptographiquement par I2P."
|
||||
},
|
||||
"certLabel": {
|
||||
"description": "Étiquette pour info certificat",
|
||||
"message": "Renseignements sur le certificat:"
|
||||
},
|
||||
"certPresent": {
|
||||
"description": "Contenu pour les informations de certificat si présent",
|
||||
"message": "Ce site utilise HTTPS. HTTPS sur I2P est expérimental et nécessite des certificats autosignés ou des auteurs root alternatifs."
|
||||
},
|
||||
"clearData": {
|
||||
"description": "Clear Browsing Data menu item.",
|
||||
"message": "Données de croissance claire:"
|
||||
},
|
||||
"clearDesc": {
|
||||
"description": "Effacer la description des données de navigation.",
|
||||
"message": "Utilisez ceci pour effacer vos données de navigation I2P."
|
||||
},
|
||||
"controlExplain": {
|
||||
"description": "Introduisez le panneau de commande.",
|
||||
"message": "Ces contrôles sont utilisés pour adapter votre expérience de croissance I2P"
|
||||
},
|
||||
"controlHeader": {
|
||||
"description": "Headline pour panneau de commande.",
|
||||
"message": "Contrôle"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"description": "Aide pour configurer les options pour le bouton Reset Tunnel",
|
||||
"message": "Configurez votre routeur."
|
||||
},
|
||||
"controlHostText": {
|
||||
"description": "Host for the Router Console",
|
||||
"message": "Hostie de contrôle:"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"description": "Host for the Router Console",
|
||||
"message": "127.0.0.1"
|
||||
},
|
||||
"controlPortText": {
|
||||
"description": "Port pour la Console Routeur",
|
||||
"message": "Port de contrôle:"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"description": "Port pour la Console Routeur",
|
||||
"message": "7657"
|
||||
},
|
||||
"disableHistory": {
|
||||
"description": "L'étiquette de la case à cocher.",
|
||||
"message": "Histoire désactive dans I2P Tabs?"
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"description": "WebRTC checkbox label.",
|
||||
"message": "Activer WebRTC avec proxy?"
|
||||
},
|
||||
"extensionDescription": {
|
||||
"description": "Description de l'extension.",
|
||||
"message": "Votre navigateur est maintenant configuré pour utiliser I2P."
|
||||
},
|
||||
"extensionName": {
|
||||
"description": "Nom de l'extension.",
|
||||
"message": "I2P Dans la foule privée"
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"description": "Nom de l'extension.",
|
||||
"message": "I2P In Private Browsing - Variante Rhizome"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "I2P Management"
|
||||
},
|
||||
"extensionVersion": {
|
||||
"description": "Version de l'extension.",
|
||||
"message": "1.28"
|
||||
},
|
||||
"forumMessage": {
|
||||
"description": "Message d'aide",
|
||||
"message": "Visitez le Forum I2P pour en savoir plus ou demandez de l'aide"
|
||||
},
|
||||
"help": {
|
||||
"description": "Description pour la page du bouton d'extension.",
|
||||
"message": "Pour plus d'informations sur cette extension, visitez cette page."
|
||||
},
|
||||
"helpMessage": {
|
||||
"description": "Message d'aide",
|
||||
"message": "Obtenez de l'aide supplémentaire"
|
||||
},
|
||||
"histDesc": {
|
||||
"description": "Historique",
|
||||
"message": "L'histoire est automatiquement effacée lorsque vos onglets I2P sont fermés. Si vous voulez effacer l'histoire comme vous allez, cochez cette case."
|
||||
},
|
||||
"homepage": {
|
||||
"description": "Trouver plus d'informations",
|
||||
"message": "Plus d'informations sont disponibles ici"
|
||||
},
|
||||
"hostText": {
|
||||
"description": "Host for the HTTP or SOCKS5 Proxy",
|
||||
"message": "Hébergement :"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"description": "Description pour i2ptunnel",
|
||||
"message": "I2P dispose d'une interface web pour configurer des services .i2p comme des sites Web que vous pouvez configurer."
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Hidden Services Manager"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Hidden Services Manager (Private)"
|
||||
},
|
||||
"infoMessage": {
|
||||
"description": "Message d'aide",
|
||||
"message": "Vous êtes maintenant libre de parcourir l'eepWeb! Votre navigateur est maintenant configuré pour naviguer anonymement sur le réseau I2P. Lorsque vous naviguez, votre trafic sera acheminé par d'autres nœuds réseau pour déguiser son origine, à la fois du serveur et des nœuds eux-mêmes."
|
||||
},
|
||||
"infoTitle": {
|
||||
"description": "Titre du menu Aide",
|
||||
"message": "I2P Aide"
|
||||
},
|
||||
"ircPreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Dispatch IRC"
|
||||
},
|
||||
"ircPrefacePrivate": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Dispatch IRC (Private)"
|
||||
},
|
||||
"isBase32": {
|
||||
"description": "Message pour le site info panel base32",
|
||||
"message": "I2P Base32-Formatted Address"
|
||||
},
|
||||
"isHostName": {
|
||||
"description": "Message pour le site info panel hostname",
|
||||
"message": "I2P Jump Hostname"
|
||||
},
|
||||
"mailPreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Web Mail"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Web Mail (Private)"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "MuWire"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "MuWire (Private)"
|
||||
},
|
||||
"newsMessage": {
|
||||
"description": "Message d'aide",
|
||||
"message": "Visitez le I2P Blog pour en savoir plus sur i2p."
|
||||
},
|
||||
"portText": {
|
||||
"description": "Port pour la proxy HTTP ou SOCKS5",
|
||||
"message": "Port:"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"description": "Valeur pour le gestionnaire du protocole magnétique",
|
||||
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s d ' action=Add);foo=Add+torrent"
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"description": "Proxy a échoué.",
|
||||
"message": "Proxy n'est pas prêt"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"description": "Aide pour configurer les options pour le bouton Reset Tunnel",
|
||||
"message": "Configurez votre proxy I2P ici."
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"description": "Proxy a échoué.",
|
||||
"message": "Proxy est prêt"
|
||||
},
|
||||
"releases": {
|
||||
"description": "Description pour la nouvelle page de sortie",
|
||||
"message": "Consultez les nouvelles versions ici"
|
||||
},
|
||||
"resetMessage": {
|
||||
"description": "Message pour le bouton Reset Tunnel",
|
||||
"message": "Réinitialiser le tunnel"
|
||||
},
|
||||
"routerConsole": {
|
||||
"description": "Description pour la console routeur.",
|
||||
"message": "Le point d'entrée pour toutes les autres applications I2P est la Console Routeur I2P. Pour la visiter, cliquez ici."
|
||||
},
|
||||
"routerPreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Router Console"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Console Routeur (Private)"
|
||||
},
|
||||
"rtcDesc": {
|
||||
"description": "WebRTC action description",
|
||||
"message": "WebRTC est désactivé par défaut, mais vous pouvez le retourner et le forcer à honorer le proxy. Si vous êtes un utilisateur de l'extension de navigateur Snowflake, cette option est désactivée et WebRTC est activé par défaut."
|
||||
},
|
||||
"siteLabel": {
|
||||
"description": "Étiquette pour info site i2p",
|
||||
"message": "Adresse/Site Information:"
|
||||
},
|
||||
"snark": {
|
||||
"description": "Description pour Bittorrent",
|
||||
"message": "I2P est capable de partager des fichiers Peer-to-Peer anonymes en utilisant l'application Bitcoin intégrée."
|
||||
},
|
||||
"sources": {
|
||||
"description": "Description du lien de code source",
|
||||
"message": "Parcourez le code source ici"
|
||||
},
|
||||
"susimail": {
|
||||
"description": "Description pour e-mail",
|
||||
"message": "I2P regroupe également un client webmail qui peut être utilisé pour accéder à l'e-mail en-I2P."
|
||||
},
|
||||
"titlePreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "I2P Browser"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "I2P Browser (Private)"
|
||||
},
|
||||
"toopieName": {
|
||||
"description": "Nom de la barre latérale.",
|
||||
"message": "aussi. html"
|
||||
},
|
||||
"toopieTLS": {
|
||||
"description": "Nom du panneau de sécurité.",
|
||||
"message": "Propriétés du site"
|
||||
},
|
||||
"torPreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Tor Manager"
|
||||
},
|
||||
"torPrefacePrivate": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Tor Manager (Private)"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Bittorrent"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Bittorrent (Private)"
|
||||
},
|
||||
"webPreface": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Navigateur Web"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"description": "Préface pour la barre de titre du navigateur",
|
||||
"message": "Navigateur Web (Private)"
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"description": "Router Console label.",
|
||||
"message": "Router Console:"
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"description": "Page d'aide pour l'étiquette d'extension.",
|
||||
"message": "Page d'aide :"
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"description": "Page d'accueil pour l'étiquette d'extension.",
|
||||
"message": "Page d'accueil :"
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"description": "Titre de i2ptunnel",
|
||||
"message": "Hidden Services Manager:"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"description": "Visitez la page de sortie",
|
||||
"message": "Extension Releases:"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"description": "Titre de Bittorrent",
|
||||
"message": "Bittorrent:"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"description": "Titre du lien de code source",
|
||||
"message": "Code d ' extension:"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"description": "Titre de l ' e-mail",
|
||||
"message": "E-Mail:"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"description": "Page d'accueil de visite sur Github",
|
||||
"message": "Extension Home Page:"
|
||||
}
|
||||
}
|
322
_locales/it/messages.json
Normal file
322
_locales/it/messages.json
Normal file
@@ -0,0 +1,322 @@
|
||||
{
|
||||
"abouthome": {
|
||||
"description": "Descrizione per la pagina del pulsante estensione.",
|
||||
"message": "Per maggiori informazioni su questa estensione, visita questa pagina."
|
||||
},
|
||||
"applicationExplain": {
|
||||
"description": "Descrizione per sezione applicazione.",
|
||||
"message": "Queste applicazioni lavorano direttamente con I2P per fornire loro sicurezza e privacy."
|
||||
},
|
||||
"applicationHeader": {
|
||||
"description": "Intestazione per la sezione applicazioni.",
|
||||
"message": "Applicazioni"
|
||||
},
|
||||
"blogPreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Blog"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Blog (Private)"
|
||||
},
|
||||
"botePreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "I2P-Bote Mail"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "I2P-Bote Mail (Private)"
|
||||
},
|
||||
"certAbsent": {
|
||||
"description": "Contenuto per informazioni sul certificato se assente",
|
||||
"message": "Questo sito non utilizza HTTPS. È ancora verificata crittograficamente da I2P."
|
||||
},
|
||||
"certLabel": {
|
||||
"description": "Etichetta per informazioni sul certificato",
|
||||
"message": "Informazioni sul certificato:"
|
||||
},
|
||||
"certPresent": {
|
||||
"description": "Contenuto per informazioni sul certificato se presente",
|
||||
"message": "Questo sito utilizza HTTPS. HTTPS su I2P è sperimentale e richiede certificati auto-firmati o autoriti radice alternativi."
|
||||
},
|
||||
"clearData": {
|
||||
"description": "Cancella voce del menu di navigazione dati.",
|
||||
"message": "Dati di navigazione trasparenti:"
|
||||
},
|
||||
"clearDesc": {
|
||||
"description": "Cancella la descrizione dell'azione dei dati di navigazione.",
|
||||
"message": "Utilizzare questo per cancellare i dati di navigazione I2P."
|
||||
},
|
||||
"controlExplain": {
|
||||
"description": "Introdurre il pannello di controllo.",
|
||||
"message": "Questi controlli vengono utilizzati per personalizzare la tua I2P Browsing Experience"
|
||||
},
|
||||
"controlHeader": {
|
||||
"description": "Headline per pannello di controllo.",
|
||||
"message": "Controllo"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"description": "Aiuto per configurare le opzioni per il pulsante Reset Tunnel",
|
||||
"message": "Configura la console router qui."
|
||||
},
|
||||
"controlHostText": {
|
||||
"description": "Host per la console Router",
|
||||
"message": "Host di controllo:"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"description": "Host per la console Router",
|
||||
"message": "127.0.0.1"
|
||||
},
|
||||
"controlPortText": {
|
||||
"description": "Porto per la console Router",
|
||||
"message": "Porto di controllo:"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"description": "Porto per la console Router",
|
||||
"message": "7657"
|
||||
},
|
||||
"disableHistory": {
|
||||
"description": "Etichetta della casella di controllo di storia.",
|
||||
"message": "Disattivare la storia nelle schede I2P?"
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"description": "Etichetta della casella di controllo WebRTC.",
|
||||
"message": "Attiva WebRTC con proxy?"
|
||||
},
|
||||
"extensionDescription": {
|
||||
"description": "Descrizione dell'estensione.",
|
||||
"message": "Il browser è ora impostato per utilizzare I2P."
|
||||
},
|
||||
"extensionName": {
|
||||
"description": "Nome dell'estensione.",
|
||||
"message": "I2P In navigazione privata"
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"description": "Nome dell'estensione.",
|
||||
"message": "I2P In navigazione privata - Variante Rhizome"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Gestione I2P"
|
||||
},
|
||||
"extensionVersion": {
|
||||
"description": "Versione dell'estensione.",
|
||||
"message": "1.2."
|
||||
},
|
||||
"forumMessage": {
|
||||
"description": "Messaggio di aiuto",
|
||||
"message": "Visita il Forum I2P per saperne di più o chiedere assistenza"
|
||||
},
|
||||
"help": {
|
||||
"description": "Descrizione per la pagina del pulsante estensione.",
|
||||
"message": "Per maggiori informazioni su questa estensione, visita questa pagina."
|
||||
},
|
||||
"helpMessage": {
|
||||
"description": "Messaggio di aiuto",
|
||||
"message": "Ottieni ulteriore aiuto"
|
||||
},
|
||||
"histDesc": {
|
||||
"description": "Descrizione dell'azione",
|
||||
"message": "La storia viene automaticamente cancellata quando le schede I2P sono chiuse. Se vuoi cancellare la storia mentre vai, controlla questa scatola."
|
||||
},
|
||||
"homepage": {
|
||||
"description": "Trova maggiori informazioni",
|
||||
"message": "Ulteriori informazioni sono disponibili qui"
|
||||
},
|
||||
"hostText": {
|
||||
"description": "Host per il proxy HTTP o SOCKS5",
|
||||
"message": "Host:"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"description": "Descrizione per i2ptunnel",
|
||||
"message": "I2P ha un'interfaccia web-based per configurare i servizi .i2p come siti web che è possibile configurare."
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Gestione dei servizi nascosti"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Gestione Servizi Nascosti (Private)"
|
||||
},
|
||||
"infoMessage": {
|
||||
"description": "Messaggio di aiuto",
|
||||
"message": "Ora siete liberi di navigare in eepWeb! Il browser è ora configurato per navigare in modo anonimo sulla rete I2P. Mentre si naviga, il traffico sarà indirizzato attraverso altri nodi di rete per mascherare l'origine, sia dal server che dai nodi stessi."
|
||||
},
|
||||
"infoTitle": {
|
||||
"description": "Titolo per il menu di aiuto",
|
||||
"message": "I2P Aiuto"
|
||||
},
|
||||
"ircPreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "IRC di distribuzione"
|
||||
},
|
||||
"ircPrefacePrivate": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Dispatch IRC (Private)"
|
||||
},
|
||||
"isBase32": {
|
||||
"description": "Messaggio per il sito info panel base32",
|
||||
"message": "I2P Base32-Formatted Indirizzo"
|
||||
},
|
||||
"isHostName": {
|
||||
"description": "Messaggio per il sito info pannello hostname",
|
||||
"message": "I2P Jump Hostname"
|
||||
},
|
||||
"mailPreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Web Mail"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Web Mail (Private)"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "MuWire"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "MuWire (Privato)"
|
||||
},
|
||||
"newsMessage": {
|
||||
"description": "Messaggio di aiuto",
|
||||
"message": "Visita l'I2P Blog per conoscere le ultime informazioni su i2p."
|
||||
},
|
||||
"portText": {
|
||||
"description": "Porta per il proxy HTTP o SOCKS5",
|
||||
"message": "Porto:"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"description": "Valore per il gestore del protocollo magnete",
|
||||
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s\u0026action=Add\u0026foo=Add+torrent"
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"description": "Lo stato del fallimento del proxy.",
|
||||
"message": "Il proxy non è pronto"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"description": "Aiuto per configurare le opzioni per il pulsante Reset Tunnel",
|
||||
"message": "Configura il proxy I2P qui."
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"description": "Lo stato del fallimento del proxy.",
|
||||
"message": "Il proxy è pronto"
|
||||
},
|
||||
"releases": {
|
||||
"description": "Descrizione per la nuova pagina di rilascio",
|
||||
"message": "Controlla le nuove versioni qui"
|
||||
},
|
||||
"resetMessage": {
|
||||
"description": "Messaggio per il pulsante Reset Tunnel",
|
||||
"message": "Tunnel di reset"
|
||||
},
|
||||
"routerConsole": {
|
||||
"description": "Descrizione per la console router.",
|
||||
"message": "Il punto di ingresso per tutte le altre applicazioni I2P è la console Router I2P. Per visitarlo, clicca qui."
|
||||
},
|
||||
"routerPreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Router Console"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Router Console (Private)"
|
||||
},
|
||||
"rtcDesc": {
|
||||
"description": "Descrizione dell'azione WebRTC",
|
||||
"message": "WebRTC è disabilitato per impostazione predefinita, ma è possibile accenderlo e forzarlo per onorare il proxy. Se sei un utente dell'estensione del browser Snowflake, questa opzione è disabilitata e WebRTC è attivata per impostazione predefinita."
|
||||
},
|
||||
"siteLabel": {
|
||||
"description": "Etichetta per i2p sito info",
|
||||
"message": "Indirizzo/Sito Informazioni:"
|
||||
},
|
||||
"snark": {
|
||||
"description": "Descrizione per Bittorrent",
|
||||
"message": "I2P è in grado di condividere file Peer-to-Peer anonimi utilizzando l'applicazione bittorrent integrata."
|
||||
},
|
||||
"sources": {
|
||||
"description": "Descrizione per il collegamento codice sorgente",
|
||||
"message": "Sfoglia il codice sorgente qui"
|
||||
},
|
||||
"susimail": {
|
||||
"description": "Descrizione per e-mail",
|
||||
"message": "I2P fa anche un client webmail che può essere utilizzato per accedere all'e-mail in-I2P."
|
||||
},
|
||||
"titlePreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "I2P Browser"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "I2P Browser (Privato)"
|
||||
},
|
||||
"toopieName": {
|
||||
"description": "Nome della barra laterale.",
|
||||
"message": "anch'io. html"
|
||||
},
|
||||
"toopieTLS": {
|
||||
"description": "Nome del pannello di sicurezza.",
|
||||
"message": "Proprietà del sito"
|
||||
},
|
||||
"torPreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Tor Manager"
|
||||
},
|
||||
"torPrefacePrivate": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Tor Manager (Private)"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Bittorrent"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Bittorrent (Private)"
|
||||
},
|
||||
"webPreface": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Browser Web"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"description": "Prefazione per la barra del browser",
|
||||
"message": "Web Browser (Privato)"
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"description": "Etichetta Router Console.",
|
||||
"message": "Router Console:"
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"description": "Pagina di aiuto per l'etichetta di estensione.",
|
||||
"message": "Pagina di aiuto:"
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"description": "Pagina iniziale per l'etichetta di estensione.",
|
||||
"message": "Pagina iniziale:"
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"description": "Titolo per i2ptunnel",
|
||||
"message": "Hidden Services Manager:"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"description": "Visita la pagina di rilascio",
|
||||
"message": "Rilasci di estensione:"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"description": "Titolo per Bittorrent",
|
||||
"message": "Bittorrent:"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"description": "Titolo per codice sorgente link",
|
||||
"message": "Codice sorgente di estensione:"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"description": "Titolo per e-mail",
|
||||
"message": "E-Mail:"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"description": "Visita l'estensione homepage su Github",
|
||||
"message": "Pagina iniziale di estensione:"
|
||||
}
|
||||
}
|
322
_locales/ja/messages.json
Normal file
322
_locales/ja/messages.json
Normal file
@@ -0,0 +1,322 @@
|
||||
{
|
||||
"abouthome": {
|
||||
"description": "延長ボタンページの説明。",
|
||||
"message": "この拡張機能の詳細については、このページをご覧ください。"
|
||||
},
|
||||
"applicationExplain": {
|
||||
"description": "アプリケーションセクションの説明。",
|
||||
"message": "これらのアプリケーションは、I2Pと直接連携して、セキュリティとプライバシーを提供します。"
|
||||
},
|
||||
"applicationHeader": {
|
||||
"description": "アプリケーションセクションのヘッダー。",
|
||||
"message": "アプリケーション"
|
||||
},
|
||||
"blogPreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "ニュース"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "ブログ(プライベート)"
|
||||
},
|
||||
"botePreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "I2P-Bote メール"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "I2P-Bote メール(プライベート)"
|
||||
},
|
||||
"certAbsent": {
|
||||
"description": "不在の場合の証明書情報のためのコンテンツ",
|
||||
"message": "このサイトはHTTPSを利用していません。 I2Pによって暗号化されても検証されています。"
|
||||
},
|
||||
"certLabel": {
|
||||
"description": "証明書情報ラベル",
|
||||
"message": "証明書情報:"
|
||||
},
|
||||
"certPresent": {
|
||||
"description": "証明書情報の内容 提示すれば",
|
||||
"message": "このサイトは HTTPS を使用しています。 I2P上のHTTPSは実験的であり、自己署名された証明書または代替ルートの作者を必要とします。"
|
||||
},
|
||||
"clearData": {
|
||||
"description": "データのメニュー項目を消去します。",
|
||||
"message": "データの閲覧をクリア:"
|
||||
},
|
||||
"clearDesc": {
|
||||
"description": "閲覧データアクションの説明をクリアします。",
|
||||
"message": "これにより、I2Pの閲覧データを消去できます。"
|
||||
},
|
||||
"controlExplain": {
|
||||
"description": "コントロールパネルを導入",
|
||||
"message": "これらのコントロールは、I2P ブラウジングエクスペリエンスを調整するために使用されます。"
|
||||
},
|
||||
"controlHeader": {
|
||||
"description": "制御のパネルのための見出し。",
|
||||
"message": "コントロール"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"description": "リセットトンネルボタンのオプションを設定するのに役立ちます",
|
||||
"message": "ルーターのコンソールをここに構成します。"
|
||||
},
|
||||
"controlHostText": {
|
||||
"description": "ルーターコンソールのホスト",
|
||||
"message": "制御ホスト:"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"description": "ルーターコンソールのホスト",
|
||||
"message": "127.0.0.1の"
|
||||
},
|
||||
"controlPortText": {
|
||||
"description": "ルーターコンソール用のポート",
|
||||
"message": "制御港:"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"description": "ルーターコンソール用のポート",
|
||||
"message": "ディストリクト7657"
|
||||
},
|
||||
"disableHistory": {
|
||||
"description": "履歴チェックボックスラベル。",
|
||||
"message": "I2Pタブで履歴を無効にできますか?"
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"description": "WebRTC チェックボックスラベル。",
|
||||
"message": "プロキシでWebRTCを有効にする?"
|
||||
},
|
||||
"extensionDescription": {
|
||||
"description": "拡張子の説明。",
|
||||
"message": "お使いのブラウザは、I2P を使用するように設定されています。"
|
||||
},
|
||||
"extensionName": {
|
||||
"description": "拡張子の名前。",
|
||||
"message": "I2Pについて プライベートブラウジング"
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"description": "拡張子の名前。",
|
||||
"message": "I2P で プライベートブラウジング - Rhizome Variant"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "I2P管理"
|
||||
},
|
||||
"extensionVersion": {
|
||||
"description": "拡張子のバージョン。",
|
||||
"message": "1.28の"
|
||||
},
|
||||
"forumMessage": {
|
||||
"description": "サポートメッセージ",
|
||||
"message": "I2Pフォーラムにアクセスして、より多くのことを学ぶか、援助を求める"
|
||||
},
|
||||
"help": {
|
||||
"description": "延長ボタンページの説明。",
|
||||
"message": "この拡張機能の詳細については、このページをご覧ください。"
|
||||
},
|
||||
"helpMessage": {
|
||||
"description": "サポートメッセージ",
|
||||
"message": "追加ヘルプを入手"
|
||||
},
|
||||
"histDesc": {
|
||||
"description": "履歴アクションの説明",
|
||||
"message": "I2Pタブが閉じられたときに履歴は自動的に消去されます。 あなたが行くように歴史をクリアしたい場合は、このボックスをチェックしてください。"
|
||||
},
|
||||
"homepage": {
|
||||
"description": "詳細情報",
|
||||
"message": "詳しくはこちらをご覧ください。"
|
||||
},
|
||||
"hostText": {
|
||||
"description": "HTTP または SOCKS 5 プロキシのホスト",
|
||||
"message": "ホスト:"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"description": "I2ptunnelの説明",
|
||||
"message": "I2P には、.i2p サービスの構成のための Web ベースのインターフェイスがあります。"
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "隠されたサービスマネージャ"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "隠しサービスマネージャ(プライベート)"
|
||||
},
|
||||
"infoMessage": {
|
||||
"description": "サポートメッセージ",
|
||||
"message": "EepWeb を閲覧できるようになりました。 お使いのブラウザは、I2Pネットワーク上で匿名で閲覧するように設定されています。 ご覧のとおり、トラフィックは他のネットワークノードを介してルーティングされ、サーバーとノード自身の両方の起源を偽装します。"
|
||||
},
|
||||
"infoTitle": {
|
||||
"description": "ヘルプメニューのタイトル",
|
||||
"message": "I2Pについて お問い合わせ"
|
||||
},
|
||||
"ircPreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "ディスパッチIRC"
|
||||
},
|
||||
"ircPrefacePrivate": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "ディスパッチIRC(プライベート)"
|
||||
},
|
||||
"isBase32": {
|
||||
"description": "サイト情報パネルベース32のメッセージ",
|
||||
"message": "I2P Base32-Formatted アドレス"
|
||||
},
|
||||
"isHostName": {
|
||||
"description": "サイト情報パネルのホスト名のためのメッセージ",
|
||||
"message": "I2Pについて ジャンプのホスト名"
|
||||
},
|
||||
"mailPreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "Webメール"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "Webメール(プライベート)"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "メニュー"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "MuWire(プライベート)"
|
||||
},
|
||||
"newsMessage": {
|
||||
"description": "サポートメッセージ",
|
||||
"message": "I2Pにアクセス i2pの最新情報を知るブログです。"
|
||||
},
|
||||
"portText": {
|
||||
"description": "HTTP または SOCKS 5 プロキシのポート",
|
||||
"message": "港:"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"description": "マグネットプロトコルハンドラの値",
|
||||
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s\u0026action=Add\u0026foo=Add+torrent"
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"description": "プロキシが失敗したステータス。",
|
||||
"message": "プロキシは準備が整っていない"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"description": "リセットトンネルボタンのオプションを設定するのに役立ちます",
|
||||
"message": "ここでは、I2P プロキシを設定します。"
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"description": "プロキシが失敗したステータス。",
|
||||
"message": "プロキシは準備ができています"
|
||||
},
|
||||
"releases": {
|
||||
"description": "新しいリリースページの説明",
|
||||
"message": "新規リリースはこちら"
|
||||
},
|
||||
"resetMessage": {
|
||||
"description": "リセットトンネルボタンのメッセージ",
|
||||
"message": "リセットトンネル"
|
||||
},
|
||||
"routerConsole": {
|
||||
"description": "ルーターコンソールの説明。",
|
||||
"message": "他のすべての I2P アプリケーションへのエントリーポイントは I2P ルータコンソールです。 詳しくはこちらをご覧ください。"
|
||||
},
|
||||
"routerPreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "ルーターコンソール"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "ルーターコンソール(プライベート)"
|
||||
},
|
||||
"rtcDesc": {
|
||||
"description": "WebRTC アクションの説明",
|
||||
"message": "WebRTC はデフォルトで無効になっていますが、それをオンにしてプロキシを称えるように強制することができます。 Snowflakeブラウザの拡張機能をご利用の場合、このオプションは無効になっており、デフォルトではWebRTCがオンになっています。"
|
||||
},
|
||||
"siteLabel": {
|
||||
"description": "I2pサイトのラベル",
|
||||
"message": "アドレス/サイト情報:"
|
||||
},
|
||||
"snark": {
|
||||
"description": "Bittorrentの記述",
|
||||
"message": "I2Pは、組み込みビットトレントアプリケーションを使用して匿名のピアツーピアファイル共有が可能です。"
|
||||
},
|
||||
"sources": {
|
||||
"description": "ソースコードリンクの記述",
|
||||
"message": "ソースコードを参照"
|
||||
},
|
||||
"susimail": {
|
||||
"description": "電子メールの記述",
|
||||
"message": "I2Pは、I2Pメールにアクセスするために使用できるWebメールクライアントもバンドルします。"
|
||||
},
|
||||
"titlePreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "I2Pブラウザ"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "I2Pブラウザ(プライベート)"
|
||||
},
|
||||
"toopieName": {
|
||||
"description": "サイドバーの名前。",
|
||||
"message": "お問い合わせ ツイート"
|
||||
},
|
||||
"toopieTLS": {
|
||||
"description": "セキュリティパネルの名前。",
|
||||
"message": "サイトのプロパティ"
|
||||
},
|
||||
"torPreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "トー・マネージャー"
|
||||
},
|
||||
"torPrefacePrivate": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "トー・マネージャー(プライベート)"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "ビットトレント"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "Bittorrent(プライベート)"
|
||||
},
|
||||
"webPreface": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "ウェブブラウザ"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"description": "ブラウザのタイトルバーのPreface",
|
||||
"message": "ウェブブラウザ(プライベート)"
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"description": "ルーターコンソールラベル。",
|
||||
"message": "ルーターコンソール:"
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"description": "拡張ラベルのヘルプページ。",
|
||||
"message": "ヘルプページ:"
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"description": "エクステンションラベルのトップページです。",
|
||||
"message": "ホームページ:"
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"description": "I2ptunnelのタイトル",
|
||||
"message": "隠されたサービスマネージャ:"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"description": "リリースページへ",
|
||||
"message": "延長リリース:"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"description": "Bittorrentのタイトル",
|
||||
"message": "Bittorrent:"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"description": "ソースコードリンクのタイトル",
|
||||
"message": "延長ソースコード:"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"description": "メールのタイトル",
|
||||
"message": "メール:"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"description": "Githubの拡張ホームページにアクセス",
|
||||
"message": "延長ホームページ:"
|
||||
}
|
||||
}
|
322
_locales/pt/messages.json
Normal file
322
_locales/pt/messages.json
Normal file
@@ -0,0 +1,322 @@
|
||||
{
|
||||
"abouthome": {
|
||||
"description": "Descrição para a página do botão de extensão.",
|
||||
"message": "Para mais informações sobre esta extensão, visite esta página."
|
||||
},
|
||||
"applicationExplain": {
|
||||
"description": "Descrição para seção de aplicação.",
|
||||
"message": "Esses aplicativos funcionam com o I2P diretamente para fornecer segurança e privacidade."
|
||||
},
|
||||
"applicationHeader": {
|
||||
"description": "Cabeçalho para seção de aplicações.",
|
||||
"message": "Aplicações"
|
||||
},
|
||||
"blogPreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Blog"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Blog (Privado)"
|
||||
},
|
||||
"botePreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "I2P-Bote Mail"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "I2P-Bote Mail (Privado)"
|
||||
},
|
||||
"certAbsent": {
|
||||
"description": "Conteúdo para informações do certificado se ausente",
|
||||
"message": "Este site não está usando HTTPS. Ainda é verificado criptograficamente pelo I2P."
|
||||
},
|
||||
"certLabel": {
|
||||
"description": "Etiquetas para informações de certificado",
|
||||
"message": "Informação do Certificado:"
|
||||
},
|
||||
"certPresent": {
|
||||
"description": "Conteúdo para informações do certificado se presente",
|
||||
"message": "Este site está usando HTTPS. HTTPS sobre I2P é experimental e requer certificados auto-assinados ou autorites de raiz alternativos."
|
||||
},
|
||||
"clearData": {
|
||||
"description": "Item de menu de dados de navegação clara.",
|
||||
"message": "Limpar dados de navegação:"
|
||||
},
|
||||
"clearDesc": {
|
||||
"description": "Descrição de ação de dados de navegação clara.",
|
||||
"message": "Use isso para apagar seus dados de navegação I2P."
|
||||
},
|
||||
"controlExplain": {
|
||||
"description": "Introduza o painel de controlo.",
|
||||
"message": "Estes controles são usados para adaptar sua experiência de navegação I2P"
|
||||
},
|
||||
"controlHeader": {
|
||||
"description": "Headline para painel de controle.",
|
||||
"message": "Controlo"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"description": "Ajuda para configurar as opções para o botão Reset Tunnel",
|
||||
"message": "Configure o console do roteador aqui."
|
||||
},
|
||||
"controlHostText": {
|
||||
"description": "Anfitrião para o console do roteador",
|
||||
"message": "Anfitrião de controle:"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"description": "Anfitrião para o console do roteador",
|
||||
"message": "127.0.0.1"
|
||||
},
|
||||
"controlPortText": {
|
||||
"description": "Porta para o console do roteador",
|
||||
"message": "Porta de controle:"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"description": "Porta para o console do roteador",
|
||||
"message": "7657"
|
||||
},
|
||||
"disableHistory": {
|
||||
"description": "Marca da caixa de seleção de história.",
|
||||
"message": "Disable History in I2P Tabs?"
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"description": "Etiqueta da caixa de seleção WebRTC.",
|
||||
"message": "Ativar WebRTC com proxy?"
|
||||
},
|
||||
"extensionDescription": {
|
||||
"description": "Descrição da extensão.",
|
||||
"message": "Seu navegador agora está configurado para usar I2P."
|
||||
},
|
||||
"extensionName": {
|
||||
"description": "Nome da extensão.",
|
||||
"message": "I2P Em Navegação Privada"
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"description": "Nome da extensão.",
|
||||
"message": "I2P Em Navegação Privada - Variante de Rhizome"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Gestão de I2P"
|
||||
},
|
||||
"extensionVersion": {
|
||||
"description": "Versão da extensão.",
|
||||
"message": "1.28"
|
||||
},
|
||||
"forumMessage": {
|
||||
"description": "Mensagem de Ajuda",
|
||||
"message": "Visite o Fórum I2P para saber mais ou pedir ajuda"
|
||||
},
|
||||
"help": {
|
||||
"description": "Descrição para a página do botão de extensão.",
|
||||
"message": "Para mais informações sobre esta extensão, visite esta página."
|
||||
},
|
||||
"helpMessage": {
|
||||
"description": "Mensagem de Ajuda",
|
||||
"message": "Obtenha ajuda adicional"
|
||||
},
|
||||
"histDesc": {
|
||||
"description": "Descrição da ação",
|
||||
"message": "A história é automaticamente limpa quando suas abas I2P estão fechadas. Se você quiser limpar a história como você vai, verifique esta caixa."
|
||||
},
|
||||
"homepage": {
|
||||
"description": "Encontre mais informações",
|
||||
"message": "Mais informações estão disponíveis aqui"
|
||||
},
|
||||
"hostText": {
|
||||
"description": "Anfitrião para o Proxy HTTP ou SOCKS5",
|
||||
"message": "Anfitrião:"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"description": "Descrição para i2ptunnel",
|
||||
"message": "I2P tem uma interface baseada na web para configurar serviços .i2p como sites que você pode configurar."
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Gerente de Serviços Escondidos"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Gestor de Serviços Escondidos (Privado)"
|
||||
},
|
||||
"infoMessage": {
|
||||
"description": "Mensagem de Ajuda",
|
||||
"message": "Agora você está livre para navegar no eepWeb! Seu navegador agora está configurado para navegar anonimamente na rede I2P. Como você navega, seu tráfego será encaminhado através de outros nós de rede para disfarçar sua origem, tanto do servidor quanto dos próprios nós."
|
||||
},
|
||||
"infoTitle": {
|
||||
"description": "Título para o menu de ajuda",
|
||||
"message": "I2P Ajuda"
|
||||
},
|
||||
"ircPreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Despacho IRC"
|
||||
},
|
||||
"ircPrefacePrivate": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "IRC (Privado)"
|
||||
},
|
||||
"isBase32": {
|
||||
"description": "Mensagem para o site info painel base32",
|
||||
"message": "Endereço I2P Base32-Formatted"
|
||||
},
|
||||
"isHostName": {
|
||||
"description": "Mensagem para o site info painel hostname",
|
||||
"message": "I2P Jump Hostname"
|
||||
},
|
||||
"mailPreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Web Mail"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Web Mail (Privado)"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "MuWire"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "MuWire (Privado)"
|
||||
},
|
||||
"newsMessage": {
|
||||
"description": "Mensagem de Ajuda",
|
||||
"message": "Visite o I2P Blog para aprender o mais recente sobre i2p."
|
||||
},
|
||||
"portText": {
|
||||
"description": "Porta para o Proxy HTTP ou SOCKS5",
|
||||
"message": "Porto:"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"description": "Valor para o manipulador de protocolo de ímã",
|
||||
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s\u0026action=Add\u0026foo=Add+torrent"
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"description": "O estado falhado da Proxy.",
|
||||
"message": "Proxy não está pronto"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"description": "Ajuda para configurar as opções para o botão Reset Tunnel",
|
||||
"message": "Configure o seu proxy I2P aqui."
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"description": "O estado falhado da Proxy.",
|
||||
"message": "Proxy está pronto"
|
||||
},
|
||||
"releases": {
|
||||
"description": "Descrição para nova página de lançamento",
|
||||
"message": "Confira novas versões aqui"
|
||||
},
|
||||
"resetMessage": {
|
||||
"description": "Mensagem para o botão Reset Tunnel",
|
||||
"message": "Repor túnel"
|
||||
},
|
||||
"routerConsole": {
|
||||
"description": "Descrição para o console do roteador.",
|
||||
"message": "O ponto de entrada para todas as outras aplicações I2P é o console de roteador I2P. Para visitá-lo, clique aqui."
|
||||
},
|
||||
"routerPreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Console de roteador"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Console de roteador (Privado)"
|
||||
},
|
||||
"rtcDesc": {
|
||||
"description": "Descrição da ação WebRTC",
|
||||
"message": "WebRTC é desativado por padrão, mas você pode ligá-lo e forçá-lo a honrar o proxy. Se você é um usuário da extensão do navegador Snowflake, esta opção é desativada e WebRTC é ativada por padrão."
|
||||
},
|
||||
"siteLabel": {
|
||||
"description": "Label for i2p site info",
|
||||
"message": "Endereço/Site Informações:"
|
||||
},
|
||||
"snark": {
|
||||
"description": "Descrição para Bittorrent",
|
||||
"message": "I2P é capaz de compartilhamento de arquivos Peer-to-Peer anônimo usando o aplicativo bittorrent embutido."
|
||||
},
|
||||
"sources": {
|
||||
"description": "Descrição para o link de código fonte",
|
||||
"message": "Procurar o código fonte aqui"
|
||||
},
|
||||
"susimail": {
|
||||
"description": "Descrição para e-mail",
|
||||
"message": "O I2P também empacota um cliente do webmail que pode ser usado para acessar o e-mail in-I2P."
|
||||
},
|
||||
"titlePreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Navegador I2P"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Navegador I2P (Privado)"
|
||||
},
|
||||
"toopieName": {
|
||||
"description": "Nome da barra lateral.",
|
||||
"message": "também. html"
|
||||
},
|
||||
"toopieTLS": {
|
||||
"description": "Nome do painel de segurança.",
|
||||
"message": "Propriedades do Site"
|
||||
},
|
||||
"torPreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Gerente de Torno"
|
||||
},
|
||||
"torPrefacePrivate": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Tor Manager (Privado)"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Bittorrent"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Bittorrent (Privado)"
|
||||
},
|
||||
"webPreface": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Navegador de Web"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"description": "Prefácio para a barra de título do navegador",
|
||||
"message": "Navegador Web (Privado)"
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"description": "Roteador Console rótulo.",
|
||||
"message": "Console do roteador:"
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"description": "Página de ajuda para o rótulo de extensão.",
|
||||
"message": "Página de Ajuda:"
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"description": "Página inicial para o rótulo de extensão.",
|
||||
"message": "Página inicial:"
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"description": "Título para i2ptunnel",
|
||||
"message": "Gestor de Serviços Escondidos:"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"description": "Visite a página de lançamento",
|
||||
"message": "Lançamentos de extensão:"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"description": "Título para Bittorrent",
|
||||
"message": "Bittorrent:"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"description": "Título para link de código fonte",
|
||||
"message": "Código de fonte de extensão:"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"description": "Título para e-mail",
|
||||
"message": "E-Mail:"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"description": "Visite a página inicial da extensão no Github",
|
||||
"message": "Página inicial da extensão:"
|
||||
}
|
||||
}
|
322
_locales/ru/messages.json
Normal file
322
_locales/ru/messages.json
Normal file
@@ -0,0 +1,322 @@
|
||||
{
|
||||
"abouthome": {
|
||||
"description": "Описание для страницы кнопки расширения.",
|
||||
"message": "Для получения дополнительной информации об этом расширении, посетите эту страницу."
|
||||
},
|
||||
"applicationExplain": {
|
||||
"description": "Описание для раздела приложения.",
|
||||
"message": "Эти приложения работают с I2P напрямую, чтобы обеспечить их безопасностью и конфиденциальностью."
|
||||
},
|
||||
"applicationHeader": {
|
||||
"description": "Заголовок для раздела приложений.",
|
||||
"message": "Приложения"
|
||||
},
|
||||
"blogPreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Блог"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Блог (Частная)"
|
||||
},
|
||||
"botePreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "I2P-Bote почта"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "I2P-Bote Mail (Частная)"
|
||||
},
|
||||
"certAbsent": {
|
||||
"description": "Содержание для информации о сертификате, если отсутствует",
|
||||
"message": "Этот сайт не использует HTTPS. Он по-прежнему проверяется криптографически I2P."
|
||||
},
|
||||
"certLabel": {
|
||||
"description": "Лейбл для информации о сертификате",
|
||||
"message": "Информация о сертификате:"
|
||||
},
|
||||
"certPresent": {
|
||||
"description": "Содержание для информации о сертификате, если есть",
|
||||
"message": "Этот сайт использует HTTPS. HTTPS над I2P является экспериментальным и требует самоподписных сертификатов или альтернативных корневых авторитов."
|
||||
},
|
||||
"clearData": {
|
||||
"description": "Очистить просмотр элемента меню данных.",
|
||||
"message": "Прозрачные данные для просмотра:"
|
||||
},
|
||||
"clearDesc": {
|
||||
"description": "Очистить описание действий по просмотру данных.",
|
||||
"message": "Используйте это, чтобы стереть ваши данные I2P просмотра."
|
||||
},
|
||||
"controlExplain": {
|
||||
"description": "Представьте панель управления.",
|
||||
"message": "Эти управления используются для адаптации вашего I2P Browsing Experience"
|
||||
},
|
||||
"controlHeader": {
|
||||
"description": "Заголовок для панели управления.",
|
||||
"message": "Контроль"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"description": "Помощь для настройки вариантов для кнопки Reset Tunnel",
|
||||
"message": "Настройте свою лоутерную консоль здесь."
|
||||
},
|
||||
"controlHostText": {
|
||||
"description": "Хост для Router Console",
|
||||
"message": "Контролировать хозяин:"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"description": "Хост для Router Console",
|
||||
"message": "0.0.1"
|
||||
},
|
||||
"controlPortText": {
|
||||
"description": "Порт для Router Console",
|
||||
"message": "Порт управления:"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"description": "Порт для Router Console",
|
||||
"message": "7657"
|
||||
},
|
||||
"disableHistory": {
|
||||
"description": "История checkbox label.",
|
||||
"message": "Отключить историю в I2P Tabs?"
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"description": "WebRTC checkbox этикетка.",
|
||||
"message": "Включить WebRTC с прокси?"
|
||||
},
|
||||
"extensionDescription": {
|
||||
"description": "Описание расширения.",
|
||||
"message": "Ваш браузер теперь настроен для использования I2P."
|
||||
},
|
||||
"extensionName": {
|
||||
"description": "Название расширения.",
|
||||
"message": "И2П В Private Browsing"
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"description": "Название расширения.",
|
||||
"message": "I2P в частном просмотре - Rhizome Variant"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "I2P Менеджмент"
|
||||
},
|
||||
"extensionVersion": {
|
||||
"description": "Версия расширения.",
|
||||
"message": "1,28"
|
||||
},
|
||||
"forumMessage": {
|
||||
"description": "Помощь Сообщение",
|
||||
"message": "Посетите I2P форум, чтобы узнать больше или обратиться за помощью"
|
||||
},
|
||||
"help": {
|
||||
"description": "Описание для страницы кнопки расширения.",
|
||||
"message": "Для получения дополнительной информации об этом расширении, посетите эту страницу."
|
||||
},
|
||||
"helpMessage": {
|
||||
"description": "Помощь Сообщение",
|
||||
"message": "Получить дополнительную помощь"
|
||||
},
|
||||
"histDesc": {
|
||||
"description": "Описание действий по истории",
|
||||
"message": "История автоматически очищается, когда ваши вкладки I2P закрыты. Если вы хотите очистить историю, как вы идете, проверьте эту коробку."
|
||||
},
|
||||
"homepage": {
|
||||
"description": "Найти больше информации",
|
||||
"message": "Более подробная информация доступна здесь"
|
||||
},
|
||||
"hostText": {
|
||||
"description": "Хост для HTTP или SOCKS5 Proxy",
|
||||
"message": "Хост:"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"description": "Описание для i2ptunnel",
|
||||
"message": "I2P имеет веб-интерфейс для настройки .i2p сервисов, таких как веб-сайты, которые вы можете настроить."
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Менеджер скрытых услуг"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Скрытые услуги менеджер (Частная)"
|
||||
},
|
||||
"infoMessage": {
|
||||
"description": "Помощь Сообщение",
|
||||
"message": "Теперь вы можете бесплатно просматривать eepWeb! Ваш браузер теперь настроен, чтобы просматривать анонимно в сети I2P. Как вы просматриваете, ваш трафик будет маршрутизирован через другие сетевые узлы, чтобы отвратить его происхождение, как с сервера, так и от самих узлов."
|
||||
},
|
||||
"infoTitle": {
|
||||
"description": "Название для меню помощи",
|
||||
"message": "И2П Помощь"
|
||||
},
|
||||
"ircPreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Диспетчер IRC"
|
||||
},
|
||||
"ircPrefacePrivate": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Диспетчер IRC (Private)"
|
||||
},
|
||||
"isBase32": {
|
||||
"description": "Сообщение для сайта info panel base32",
|
||||
"message": "I2P Base32-Форматированный адрес"
|
||||
},
|
||||
"isHostName": {
|
||||
"description": "Сообщение для сайта info panel hostname",
|
||||
"message": "И2П Перейти Hostname"
|
||||
},
|
||||
"mailPreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Веб-почта"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Web Mail (Частная)"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Мувира"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "MuWire (Частная)"
|
||||
},
|
||||
"newsMessage": {
|
||||
"description": "Помощь Сообщение",
|
||||
"message": "Посетите I2P Блог, чтобы узнать последние о i2p."
|
||||
},
|
||||
"portText": {
|
||||
"description": "Порт для HTTP или SOCKS5 Proxy",
|
||||
"message": "Порт:"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"description": "Значение для контроллера протокола магнита",
|
||||
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s\u0026action=Add\u0026foo=Add+torrent"
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"description": "Прокси не удалось статус.",
|
||||
"message": "Прокси не готов"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"description": "Помощь для настройки вариантов для кнопки Reset Tunnel",
|
||||
"message": "Настройте свои I2P-прокси здесь."
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"description": "Прокси не удалось статус.",
|
||||
"message": "Proxy готов"
|
||||
},
|
||||
"releases": {
|
||||
"description": "Описание для новой страницы выпуска",
|
||||
"message": "Проверьте новые релизы здесь"
|
||||
},
|
||||
"resetMessage": {
|
||||
"description": "Сообщение для кнопки Reset Tunnel",
|
||||
"message": "Сбросить тоннель"
|
||||
},
|
||||
"routerConsole": {
|
||||
"description": "Описание для рулевой консоли.",
|
||||
"message": "Вводная точка для всех других приложений I2P является I2P Router Console. Чтобы посетить его, нажмите здесь."
|
||||
},
|
||||
"routerPreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Router Консоль"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Router Console (Частная)"
|
||||
},
|
||||
"rtcDesc": {
|
||||
"description": "Описание действий WebRTC",
|
||||
"message": "WebRTC отключен по умолчанию, но вы можете включить его и заставить его почитать прокси. Если вы являетесь пользователем расширения браузера Snowflake, этот вариант отключен и WebRTC по умолчанию включен."
|
||||
},
|
||||
"siteLabel": {
|
||||
"description": "Лейбл для i2p сайта info",
|
||||
"message": "Адрес/Сайт Информация:"
|
||||
},
|
||||
"snark": {
|
||||
"description": "Описание для Bittorrent",
|
||||
"message": "I2P способна анонимного обмена файлами Peer-to-Peer с использованием встроенного bittorrent приложения."
|
||||
},
|
||||
"sources": {
|
||||
"description": "Описание для ссылки исходного кода",
|
||||
"message": "Просмотр исходного кода здесь"
|
||||
},
|
||||
"susimail": {
|
||||
"description": "Описание для электронной почты",
|
||||
"message": "I2P также связывает клиент веб-почты, который может быть использован для доступа в I2P e-mail."
|
||||
},
|
||||
"titlePreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "I2P Браузер"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "I2P Браузер (Private)"
|
||||
},
|
||||
"toopieName": {
|
||||
"description": "Название боковой панели.",
|
||||
"message": "тоже. html"
|
||||
},
|
||||
"toopieTLS": {
|
||||
"description": "Название панели безопасности.",
|
||||
"message": "Свойства сайта"
|
||||
},
|
||||
"torPreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Тор-менеджер"
|
||||
},
|
||||
"torPrefacePrivate": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Tor Manager (Частная)"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Bittorrent"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Bittorrent (Частная)"
|
||||
},
|
||||
"webPreface": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Веб-браузер"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"description": "Предисловие для панели заголовка браузера",
|
||||
"message": "Веб-браузер (Private)"
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"description": "Router Console этикетка.",
|
||||
"message": "Router Консоль:"
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"description": "Помогите странице для ярлыка расширения.",
|
||||
"message": "Страница помощи:"
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"description": "Домашняя страница для ярлыка расширения.",
|
||||
"message": "Домашняя страница:"
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"description": "Название для i2ptunnel",
|
||||
"message": "Скрытые услуги менеджера:"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"description": "Посетите страницу релиза",
|
||||
"message": "Расширение релизов:"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"description": "Название для Bittorrent",
|
||||
"message": "Bittorrent:"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"description": "Название для исходного кода link",
|
||||
"message": "Код источника расширения:"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"description": "Название для электронной почты",
|
||||
"message": "Электронная почта:"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"description": "Посетите страницу расширения на Github",
|
||||
"message": "Расширение домашняя страница:"
|
||||
}
|
||||
}
|
322
_locales/zh/messages.json
Normal file
322
_locales/zh/messages.json
Normal file
@@ -0,0 +1,322 @@
|
||||
{
|
||||
"abouthome": {
|
||||
"description": "展期页。",
|
||||
"message": "关于这一扩展的更多信息,本页访问。"
|
||||
},
|
||||
"applicationExplain": {
|
||||
"description": "申请款的说明。",
|
||||
"message": "这些申请直接与I2P合作,向他们提供安全和隐私权。"
|
||||
},
|
||||
"applicationHeader": {
|
||||
"description": "申请科长。",
|
||||
"message": "申请"
|
||||
},
|
||||
"blogPreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "评 注"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "Blog (Private)"
|
||||
},
|
||||
"botePreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "I2P-Bote Mail"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "I2P-Bote Mail(Private)"
|
||||
},
|
||||
"certAbsent": {
|
||||
"description": "无证件的处理",
|
||||
"message": "该网站没有使用HTTPS。 仍然由I2P核实。"
|
||||
},
|
||||
"certLabel": {
|
||||
"description": "出生证明人",
|
||||
"message": "证明信息:"
|
||||
},
|
||||
"certPresent": {
|
||||
"description": "证明的内容",
|
||||
"message": "该网站使用HTTPS。 在I2P的技转设备是试验性的,需要自发证书或副根基。"
|
||||
},
|
||||
"clearData": {
|
||||
"description": "清点数据男性u项目。",
|
||||
"message": "数据交换:"
|
||||
},
|
||||
"clearDesc": {
|
||||
"description": "数据行动说明。",
|
||||
"message": "利用这一手段使你的I2Prows数据消失。"
|
||||
},
|
||||
"controlExplain": {
|
||||
"description": "介绍控制小组。",
|
||||
"message": "这些管制用来适应你的I2Prows的经历"
|
||||
},
|
||||
"controlHeader": {
|
||||
"description": "控制小组负责人。",
|
||||
"message": "控制"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"description": "B. 帮助精简重新启动的Tunnel但顿办法",
|
||||
"message": "调整你的路线。"
|
||||
},
|
||||
"controlHostText": {
|
||||
"description": "B. 勒索的旅舍",
|
||||
"message": "控制旅舍:"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"description": "B. 勒索的旅舍",
|
||||
"message": "1270.0.1"
|
||||
},
|
||||
"controlPortText": {
|
||||
"description": "Router Console港",
|
||||
"message": "管制港:"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"description": "Router Console港",
|
||||
"message": "7657"
|
||||
},
|
||||
"disableHistory": {
|
||||
"description": "历史检查箱标签。",
|
||||
"message": "I2P Tabs可观的历史?"
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"description": "RTC检查箱标签。",
|
||||
"message": "传真:"
|
||||
},
|
||||
"extensionDescription": {
|
||||
"description": "说明延期。",
|
||||
"message": "现已设立你的代行,以使用I2P。"
|
||||
},
|
||||
"extensionName": {
|
||||
"description": "延期名称。",
|
||||
"message": "I2P 私人成长"
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"description": "延期名称。",
|
||||
"message": "I2P in Private Brows - Rhizome Variant"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "I2 管理"
|
||||
},
|
||||
"extensionVersion": {
|
||||
"description": "延长。",
|
||||
"message": "1.28"
|
||||
},
|
||||
"forumMessage": {
|
||||
"description": "求助者",
|
||||
"message": "访问伊加特论坛学习更多或要求援助"
|
||||
},
|
||||
"help": {
|
||||
"description": "展期页。",
|
||||
"message": "关于这一扩展的更多信息,本页访问。"
|
||||
},
|
||||
"helpMessage": {
|
||||
"description": "求助者",
|
||||
"message": "增加帮助"
|
||||
},
|
||||
"histDesc": {
|
||||
"description": "历史行动说明",
|
||||
"message": "当你的I2Ptab被关闭时,历史就自动明确。 如果你想像你那样明确历史,检查这个箱。"
|
||||
},
|
||||
"homepage": {
|
||||
"description": "更多信息",
|
||||
"message": "这方面的更多资料"
|
||||
},
|
||||
"hostText": {
|
||||
"description": "HTTP或SOCKS5 Proxy",
|
||||
"message": "东道国:"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"description": "说明",
|
||||
"message": "I2P有网站的接口,以精简网站等服务。 你可以设立。"
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "Hidden服务主管"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "Hidden Services经理(Private)"
|
||||
},
|
||||
"infoMessage": {
|
||||
"description": "求助者",
|
||||
"message": "你们现在可以自由地打下“我们”! 你的代行现在被安排在I2P网络上匿名。 正如你所想象的那样,你的交通将通过其他网络连接起来,使他们的起源,无论是从服务器还是从自己出发。"
|
||||
},
|
||||
"infoTitle": {
|
||||
"description": "帮助男性的标题",
|
||||
"message": "I2P 帮助"
|
||||
},
|
||||
"ircPreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "副渔民协会"
|
||||
},
|
||||
"ircPrefacePrivate": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "IRC(Private)"
|
||||
},
|
||||
"isBase32": {
|
||||
"description": "F. 集群小组基地网站的邮件32",
|
||||
"message": "I2P基地32-Format地址"
|
||||
},
|
||||
"isHostName": {
|
||||
"description": "集群小组所在地的传单",
|
||||
"message": "I2P Jump人质"
|
||||
},
|
||||
"mailPreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "网站"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "网址:Mail(Private)"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "MuWire"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "MuWire(Private)"
|
||||
},
|
||||
"newsMessage": {
|
||||
"description": "求助者",
|
||||
"message": "访问I2P 学习最新一倍。"
|
||||
},
|
||||
"portText": {
|
||||
"description": "HTTP或SOCKS5 Proxy港",
|
||||
"message": "港口:"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"description": "对磁带议定书手的价值",
|
||||
"message": "http://127.0.0.1:7657/i2psnark/吗?nofilter_newURL=%s\u0026action=Add\u0026foo=Add+torrentrenttorrent"
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"description": "失败状况。",
|
||||
"message": "没有准备好的。"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"description": "B. 帮助精简重新启动的Tunnel但顿办法",
|
||||
"message": "调整你的I2P proxy。"
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"description": "失败状况。",
|
||||
"message": "准备好"
|
||||
},
|
||||
"releases": {
|
||||
"description": "新发行页的说明",
|
||||
"message": "这里新排放的检查"
|
||||
},
|
||||
"resetMessage": {
|
||||
"description": "Reset Tunnel但顿先生",
|
||||
"message": "B. 重新定位"
|
||||
},
|
||||
"routerConsole": {
|
||||
"description": "标示路线。",
|
||||
"message": "其他2P应用程序的切入点是I2P Router Console。 要访问,这里点击。"
|
||||
},
|
||||
"routerPreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "Router Console"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "Router Console(Private)"
|
||||
},
|
||||
"rtcDesc": {
|
||||
"description": "海报业务说明",
|
||||
"message": "RTC网站因违约而残疾,但你可以回到它身上并迫使它名誉。 如果你是Snowflake browser展的用户,这一选择是残疾的,而网络检查中心则以违约方式提出。"
|
||||
},
|
||||
"siteLabel": {
|
||||
"description": "Label for i2psite info",
|
||||
"message": "地址/新闻:"
|
||||
},
|
||||
"snark": {
|
||||
"description": "对Bittor的通知",
|
||||
"message": "I2P能够使用建造的轨道申请来分享匿名同人-to-Peer档案。"
|
||||
},
|
||||
"sources": {
|
||||
"description": "源代码联系的说明",
|
||||
"message": "加入本源代码"
|
||||
},
|
||||
"susimail": {
|
||||
"description": "电子邮件说明",
|
||||
"message": "I2P还购了一个网址用户,可以用来进入I2P电子邮件。"
|
||||
},
|
||||
"titlePreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "I2PBrowser"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "I2P Browser(Private)"
|
||||
},
|
||||
"toopieName": {
|
||||
"description": "一方的名字。",
|
||||
"message": "也是这样。 评 注"
|
||||
},
|
||||
"toopieTLS": {
|
||||
"description": "安全小组名称。",
|
||||
"message": "特 费"
|
||||
},
|
||||
"torPreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "管理人员"
|
||||
},
|
||||
"torPrefacePrivate": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "导 言"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "Bittorrent"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "Bittorrent (Private)"
|
||||
},
|
||||
"webPreface": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "Browser"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"description": "代页标题的序言",
|
||||
"message": "网站Browser(Private)"
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"description": "Router Console标签。",
|
||||
"message": "Router Console:"
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"description": "推广标签的助页。",
|
||||
"message": "助页:"
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"description": "推广标签的主页。",
|
||||
"message": "家庭页:"
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"description": "标题一二",
|
||||
"message": "Hidden服务经理:"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"description": "访问释放页",
|
||||
"message": "推广:"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"description": "Bittorrent勋爵",
|
||||
"message": "Bitt:"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"description": "源码联系的标题",
|
||||
"message": "推广源法典:"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"description": "电子邮件的标题",
|
||||
"message": "E-Mail:"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"description": "B. 访问吉隆布的主页",
|
||||
"message": "推广家庭页:"
|
||||
}
|
||||
}
|
755
background.js
755
background.js
@@ -18,452 +18,475 @@ var muwireprefpriv = chrome.i18n.getMessage('muwirePrefacePrivate');
|
||||
var botepref = chrome.i18n.getMessage('botePreface');
|
||||
var blogpref = chrome.i18n.getMessage('blogPreface');
|
||||
var blogprefpriv = chrome.i18n.getMessage('blogPrefacePrivate');
|
||||
var torpref = chrome.i18n.getMessage('torPreface');
|
||||
var torprefpriv = chrome.i18n.getMessage('torPrefacePrivate');
|
||||
|
||||
function onError(err) {
|
||||
console.log('(background)', err);
|
||||
console.log('(background)', err);
|
||||
}
|
||||
|
||||
function onContextGotLog(contexts) {
|
||||
if (contexts != null) {
|
||||
console.log(contexts);
|
||||
}
|
||||
if (contexts != null) {
|
||||
console.log(contexts);
|
||||
}
|
||||
}
|
||||
|
||||
function onContextsGot(contexts) {
|
||||
var ids = [];
|
||||
for (let context of contexts) {
|
||||
console.log(`Name : ${context.name}`);
|
||||
ids.push(context.name);
|
||||
}
|
||||
console.log('Checking new contexts');
|
||||
if (ids.indexOf(titlepref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: titlepref,
|
||||
color: 'orange',
|
||||
icon: 'fingerprint'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(blogpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: blogpref,
|
||||
color: 'pink',
|
||||
icon: 'pet'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(webpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: webpref,
|
||||
color: 'red',
|
||||
icon: 'circle'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(routerpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: routerpref,
|
||||
color: 'blue',
|
||||
icon: 'briefcase'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(tunnelpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: tunnelpref,
|
||||
color: 'green',
|
||||
icon: 'tree'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(mailpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: mailpref,
|
||||
color: 'yellow',
|
||||
icon: 'briefcase'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(torrentpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: torrentpref,
|
||||
color: 'purple',
|
||||
icon: 'chill'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(ircpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
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);
|
||||
}
|
||||
var ids = [];
|
||||
for (let context of contexts) {
|
||||
console.log(`Name : ${context.name}`);
|
||||
ids.push(context.name);
|
||||
}
|
||||
console.log('Checking new contexts');
|
||||
if (ids.indexOf(titlepref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: titlepref,
|
||||
color: 'orange',
|
||||
icon: 'fingerprint'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(blogpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: blogpref,
|
||||
color: 'pink',
|
||||
icon: 'pet'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(webpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: webpref,
|
||||
color: 'red',
|
||||
icon: 'circle'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(routerpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: routerpref,
|
||||
color: 'blue',
|
||||
icon: 'briefcase'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(tunnelpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: tunnelpref,
|
||||
color: 'green',
|
||||
icon: 'tree'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(mailpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: mailpref,
|
||||
color: 'yellow',
|
||||
icon: 'briefcase'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(torrentpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: torrentpref,
|
||||
color: 'purple',
|
||||
icon: 'chill'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(ircpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: ircpref,
|
||||
color: 'red',
|
||||
icon: 'vacation'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(torpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: torpref,
|
||||
color: 'purple',
|
||||
icon: 'circle'
|
||||
})
|
||||
.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') {
|
||||
browser.windows.onCreated.addListener(themeWindow);
|
||||
browser.windows.onFocusChanged.addListener(themeWindow);
|
||||
browser.windows.onRemoved.addListener(themeWindow);
|
||||
browser.tabs.onUpdated.addListener(themeWindowByTab);
|
||||
browser.tabs.onActivated.addListener(themeWindowByTab);
|
||||
}
|
||||
if (got.os != 'android') {
|
||||
browser.windows.onCreated.addListener(themeWindow);
|
||||
browser.windows.onFocusChanged.addListener(themeWindow);
|
||||
browser.windows.onRemoved.addListener(themeWindow);
|
||||
browser.tabs.onUpdated.addListener(themeWindowByTab);
|
||||
browser.tabs.onActivated.addListener(themeWindowByTab);
|
||||
}
|
||||
});
|
||||
|
||||
function themeWindowByTab(tabId) {
|
||||
function tabWindow(tab) {
|
||||
var gettingPlatformInfo = browser.runtime.getPlatformInfo();
|
||||
gettingPlatformInfo.then((got) => {
|
||||
if (got.os == 'android') {
|
||||
let getwindow = browser.tabs.get(tab.tabId);
|
||||
getwindow.then(themeWindow);
|
||||
} else {
|
||||
let getwindow = browser.windows.get(tab.windowId);
|
||||
getwindow.then(themeWindow);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (typeof tabId === 'number') {
|
||||
let tab = browser.tabs.get(tabId);
|
||||
tab.then(tabWindow);
|
||||
} else {
|
||||
tabWindow(tabId);
|
||||
}
|
||||
function tabWindow(tab) {
|
||||
var gettingPlatformInfo = browser.runtime.getPlatformInfo();
|
||||
gettingPlatformInfo.then((got) => {
|
||||
if (got.os == 'android') {
|
||||
let getwindow = browser.tabs.get(tab.tabId);
|
||||
getwindow.then(themeWindow);
|
||||
} else {
|
||||
let getwindow = browser.windows.get(tab.windowId);
|
||||
getwindow.then(themeWindow);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (typeof tabId === 'number') {
|
||||
let tab = browser.tabs.get(tabId);
|
||||
tab.then(tabWindow);
|
||||
} else {
|
||||
tabWindow(tabId);
|
||||
}
|
||||
}
|
||||
|
||||
function isEmpty(obj) {
|
||||
if (obj === undefined || obj === null) {
|
||||
return true;
|
||||
}
|
||||
for (var key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
return false;
|
||||
if (obj === undefined || obj === null) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
for (var key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
let btheme = {
|
||||
colors: {
|
||||
frame: '#363A68',
|
||||
toolbar: '#363A68'
|
||||
}
|
||||
colors: {
|
||||
frame: '#363A68',
|
||||
toolbar: '#363A68',
|
||||
tab_text: '#ECF3FF'
|
||||
}
|
||||
};
|
||||
|
||||
let dtheme = {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7'
|
||||
}
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7',
|
||||
tab_text: '#ECF3FF'
|
||||
}
|
||||
};
|
||||
|
||||
function themeWindow(window) {
|
||||
// Check if the window is in private browsing
|
||||
function onThemeError() {
|
||||
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) {
|
||||
// Check if the window is in private browsing
|
||||
function onThemeError() {
|
||||
console.log('(theme) color set error');
|
||||
browserTheme();
|
||||
browser.pageAction.show(tabInfo[0].id);
|
||||
} else if (context.name == routerpref) {
|
||||
console.log('(theme) Active in Router Console window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == tunnelpref) {
|
||||
console.log('(theme) Active in Hidden Services Manager window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == mailpref) {
|
||||
console.log('(theme) Active in Web Mail window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == torrentpref) {
|
||||
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('(theme) Not active in MuWire window');
|
||||
browser.theme.reset();
|
||||
}
|
||||
}
|
||||
if (
|
||||
tabInfo[0].cookieStoreId != 'firefox-default' &&
|
||||
tabInfo[0].cookieStoreId != 'firefox-private'
|
||||
) {
|
||||
browser.contextualIdentities
|
||||
.get(tabInfo[0].cookieStoreId)
|
||||
.then(onContextGotTheme, onThemeError);
|
||||
} else {
|
||||
console.log('(theme) Not active in I2P window');
|
||||
browser.theme.reset();
|
||||
}
|
||||
}
|
||||
|
||||
var querying = browser.tabs.query({
|
||||
currentWindow: true,
|
||||
active: true
|
||||
});
|
||||
querying.then(logTabs, onThemeError);
|
||||
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() {
|
||||
console.log('(theme)Resetting theme window');
|
||||
browser.theme.reset(window.id);
|
||||
}
|
||||
|
||||
function logTabs(tabInfo) {
|
||||
function onContextGotTheme(context) {
|
||||
if (context.name == titlepref) {
|
||||
browserTheme();
|
||||
browser.pageAction.show(tabInfo[0].id);
|
||||
} else if (context.name == routerpref) {
|
||||
console.log('(theme) Active in Router Console window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == tunnelpref) {
|
||||
console.log('(theme) Active in Hidden Services Manager window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == mailpref) {
|
||||
console.log('(theme) Active in Web Mail window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == torrentpref) {
|
||||
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 == torpref) {
|
||||
console.log('(theme) Active in Tor Manager 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('(theme) Not active in I2P Window');
|
||||
unsetTheme();
|
||||
}
|
||||
}
|
||||
if (
|
||||
tabInfo[0].cookieStoreId != 'firefox-default' &&
|
||||
tabInfo[0].cookieStoreId != 'firefox-private'
|
||||
) {
|
||||
browser.contextualIdentities
|
||||
.get(tabInfo[0].cookieStoreId)
|
||||
.then(onContextGotTheme, onThemeError);
|
||||
} else {
|
||||
console.log('(theme) Not active in I2P window');
|
||||
unsetTheme();
|
||||
}
|
||||
}
|
||||
|
||||
var querying = browser.tabs.query({
|
||||
currentWindow: true,
|
||||
active: true
|
||||
});
|
||||
querying.then(logTabs, onThemeError);
|
||||
}
|
||||
|
||||
function setTitle(window) {
|
||||
// Check if the window is in private browsing
|
||||
function onContextError() {
|
||||
console.log('Context Error');
|
||||
}
|
||||
function setTitle(title, privtitle) {
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: privtitle + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: title + ': '
|
||||
});
|
||||
}
|
||||
}
|
||||
function logTabs(tabInfo) {
|
||||
function onContextGotTitle(context) {
|
||||
if (context.name == titlepref) {
|
||||
console.log('Active in I2P window');
|
||||
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');
|
||||
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');
|
||||
setTitle(tunnelpref, tunnelprefpriv);
|
||||
} else if (context.name == 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');
|
||||
setTitle(torrentpref, torrentprefpriv);
|
||||
} else if (context.name == ircpref) {
|
||||
console.log('Active in IRC window');
|
||||
setTitle(ircpref, ircprefpriv);
|
||||
}
|
||||
// Check if the window is in private browsing
|
||||
function onContextError() {
|
||||
console.log('Context Error');
|
||||
}
|
||||
|
||||
if (
|
||||
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: ''
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: ''
|
||||
});
|
||||
function setTitle(title, privtitle) {
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: privtitle + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: title + ': '
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var querying = browser.tabs.query({
|
||||
currentWindow: true,
|
||||
active: true
|
||||
});
|
||||
querying.then(logTabs, onContextError);
|
||||
function logTabs(tabInfo) {
|
||||
function onContextGotTitle(context) {
|
||||
if (context.name == titlepref) {
|
||||
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');
|
||||
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');
|
||||
setTitle(tunnelpref, tunnelprefpriv);
|
||||
} else if (context.name == 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');
|
||||
setTitle(torrentpref, torrentprefpriv);
|
||||
} else if (context.name == ircpref) {
|
||||
console.log('Active in IRC window');
|
||||
setTitle(ircpref, ircprefpriv);
|
||||
} else if (context.name == torpref) {
|
||||
console.log('Active in Tor Manager window');
|
||||
setTitle(torpref, torprefpriv);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (
|
||||
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: ''
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: ''
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var querying = browser.tabs.query({
|
||||
currentWindow: true,
|
||||
active: true
|
||||
});
|
||||
querying.then(logTabs, onContextError);
|
||||
}
|
||||
|
||||
var gettingListenerInfo = browser.runtime.getPlatformInfo();
|
||||
gettingListenerInfo.then((got) => {
|
||||
function onPlatformError() {
|
||||
console.log('Error finding platform info');
|
||||
}
|
||||
if (got.os != 'android') {
|
||||
browser.tabs.onCreated.addListener(() => {
|
||||
var getting = browser.windows.getCurrent({
|
||||
populate: true
|
||||
});
|
||||
getting.then(setTitle, onPlatformError);
|
||||
});
|
||||
browser.tabs.onActivated.addListener(() => {
|
||||
var getting = browser.windows.getCurrent({
|
||||
populate: true
|
||||
});
|
||||
getting.then(setTitle, onPlatformError);
|
||||
});
|
||||
}
|
||||
function onPlatformError() {
|
||||
console.log('Error finding platform info');
|
||||
}
|
||||
if (got.os != 'android') {
|
||||
browser.tabs.onCreated.addListener(() => {
|
||||
var getting = browser.windows.getCurrent({
|
||||
populate: true
|
||||
});
|
||||
getting.then(setTitle, onPlatformError);
|
||||
});
|
||||
browser.tabs.onActivated.addListener(() => {
|
||||
var getting = browser.windows.getCurrent({
|
||||
populate: true
|
||||
});
|
||||
getting.then(setTitle, onPlatformError);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function handleClick() {
|
||||
console.log("Opening page action");
|
||||
browser.pageAction.openPopup();
|
||||
console.log("Opening page action");
|
||||
browser.pageAction.openPopup();
|
||||
}
|
||||
browser.pageAction.onClicked.addListener(handleClick);
|
||||
|
||||
async function certCheck(details) {
|
||||
if (details.url.startsWith("https")) {
|
||||
console.log("(cert) https site", details.url);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!details.url.includes(".i2p")) {
|
||||
return;
|
||||
}
|
||||
|
||||
var tabs = await browser.tabs.query({ active: true });
|
||||
|
||||
if (tabs == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("(cert) checking cert", tabs);
|
||||
|
||||
for (tab in tabs) {
|
||||
if (details.url == tabs[tab].url) {
|
||||
console.log("(cert) right tab", tabs[tab].id);
|
||||
try {
|
||||
let securityInfo = await browser.webRequest.getSecurityInfo(
|
||||
details.requestId,
|
||||
{ certificateChain: true }
|
||||
);
|
||||
console.log("(cert) state is complete", securityInfo);
|
||||
console.log("(cert) certificates", securityInfo.certificates);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
if (details.url.startsWith("https")) {
|
||||
console.log("(cert) https site", details.url);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!details.url.includes(".i2p")) {
|
||||
return;
|
||||
}
|
||||
|
||||
var tabs = await browser.tabs.query({ active: true });
|
||||
|
||||
if (tabs == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("(cert) checking cert", tabs);
|
||||
|
||||
for (tab in tabs) {
|
||||
if (details.url == tabs[tab].url) {
|
||||
console.log("(cert) right tab", tabs[tab].id);
|
||||
try {
|
||||
let securityInfo = await browser.webRequest.getSecurityInfo(
|
||||
details.requestId, { certificateChain: true }
|
||||
);
|
||||
console.log("(cert) state is complete", securityInfo);
|
||||
console.log("(cert) certificates", securityInfo.certificates);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Listen for onHeaderReceived for the target page.
|
||||
// Set "blocking" and "responseHeaders".
|
||||
browser.webRequest.onHeadersReceived.addListener(
|
||||
certCheck,
|
||||
{ urls: ["<all_urls>"] },
|
||||
["blocking", "responseHeaders"]
|
||||
certCheck, { 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 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);
|
||||
}
|
||||
}
|
||||
var tabs = browser.tabs.query({ cookieStoreId: context.cookieStoreId });
|
||||
tabs.then(conditionallyDelete, onError);
|
||||
}
|
||||
}
|
||||
getContext.then(checkTabs, 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 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);
|
||||
}
|
||||
}
|
||||
var tabs = browser.tabs.query({ cookieStoreId: context.cookieStoreId });
|
||||
tabs.then(conditionallyDelete, onError);
|
||||
}
|
||||
}
|
||||
getContext.then(checkTabs, 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);
|
||||
if (browser.windows != undefined) {
|
||||
console.log("windows unavailable on android", browser.runtime.PlatformOs);
|
||||
browser.windows.onRemoved.addListener(onClosedWindowCheck);
|
||||
browser.windows.onCreated.addListener(onOpenedWindowCheck);
|
||||
}
|
||||
|
@@ -12,7 +12,6 @@ function contentUpdateById(id, message) {
|
||||
contentUpdateById('text-section-header', 'extensionName');
|
||||
contentUpdateById('description', 'extensionDescription');
|
||||
contentUpdateById('i2pbrowser-version', 'extensionVersion');
|
||||
contentUpdateById('proxy-check', 'proxyFailedStatus');
|
||||
|
||||
// Control Section
|
||||
contentUpdateById('controlHeader', 'controlHeader');
|
||||
@@ -54,6 +53,12 @@ fetch('http://proxy.i2p').then((myJson) => {
|
||||
if (readyness != null) {
|
||||
hide(readyness);
|
||||
}
|
||||
}, (error) => {
|
||||
contentUpdateById("proxy-check", "proxyFailedStatus");
|
||||
let readyness = document.querySelectorAll(".readyness");
|
||||
if (readyness != null) {
|
||||
hide(readyness);
|
||||
}
|
||||
});
|
||||
|
||||
function hide(elements) {
|
||||
|
48
debian/changelog
vendored
48
debian/changelog
vendored
@@ -1,3 +1,51 @@
|
||||
i2psetproxy.js (0.131-1) UNRELEASED; urgency=low
|
||||
|
||||
* Add several new contextual identities for plugin apps
|
||||
* Add option to set the homepage and new tab page on the first run
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Fri, 11 Feb 2022 20:28:16 -0400
|
||||
|
||||
i2psetproxy.js (0.125-1) UNRELEASED; urgency=low
|
||||
|
||||
* Bump and resubmit to mozilla.
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 3 Nov 2021 00:20:33 -0400
|
||||
|
||||
i2psetproxy.js (0.123-1) UNRELEASED; urgency=low
|
||||
|
||||
* Bump and resubmit to mozilla.
|
||||
* I am not going to optionally keep cookies.
|
||||
* That would be introducing a pointless security issue.
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 30 Oct 2021 10:11:51 -0400
|
||||
|
||||
i2psetproxy.js (0.121-1) UNRELEASED; urgency=low
|
||||
|
||||
* switch to browser_specific_settings manifest key
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 13 Oct 2021 21:28:28 -0400
|
||||
|
||||
i2psetproxy.js (0.119-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fixes to ease releasing via AMO
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 13 Oct 2021 20:37:30 -0400
|
||||
|
||||
i2psetproxy.js (0.117-1) UNRELEASED; urgency=low
|
||||
|
||||
* Switch to legwork for search provider.
|
||||
* admin isn't answering, but the service is up unlike yacy.idk.i2p.
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 4 Oct 2021 20:38:59 -0400
|
||||
|
||||
i2psetproxy.js (0.115-1) UNRELEASED; urgency=low
|
||||
|
||||
* Improve functionality of X-I2P-Location and X-I2P-Torrentlocation
|
||||
* Fix usage of browser.theme.reset()
|
||||
* Add checks to disable features that are broken on Android
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Fri, 1 Oct 2021 15:29:22 -0400
|
||||
|
||||
i2psetproxy.js (0.113-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix checks on BRB, railroad containers
|
||||
|
208
handler.js
208
handler.js
@@ -1,117 +1,123 @@
|
||||
function routerHost(url) {
|
||||
// console.log("(urlcheck) HANDLER URL CHECK");
|
||||
let hostname = '';
|
||||
let path = '';
|
||||
function pathcheck(str) {
|
||||
// console.log("(urlcheck) HANDLER PATH CHECK", str);
|
||||
if (str != undefined) {
|
||||
let final = str.split('/')[0];
|
||||
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
|
||||
console.log('(urlcheck) Tunnel application path', final);
|
||||
return 'i2ptunnelmgr';
|
||||
} else if (
|
||||
final === 'i2psnark' ||
|
||||
final === 'torrents' ||
|
||||
final.startsWith('transmission') ||
|
||||
final.startsWith('tracker') ||
|
||||
url.includes(':7662')
|
||||
) {
|
||||
console.log('(urlcheck) Torrent application path', final);
|
||||
return 'i2psnark';
|
||||
} else if (final === 'webmail' || final === 'susimail') {
|
||||
if (!url.includes('.css')) {
|
||||
console.log('(urlcheck) Mail application path', final);
|
||||
return 'webmail';
|
||||
}
|
||||
} 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 + '/', '');
|
||||
} else if (identifyProtocolHandler(url)) {
|
||||
let newurl = identifyProtocolHandler(url);
|
||||
return routerHost(newurl);
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
path = url.replace(hostname + '/', '');
|
||||
}
|
||||
if (hostname === control_host + ':' + control_port) {
|
||||
//console.log("(hostcheck) router console found on configured ports");
|
||||
return pathcheck(path);
|
||||
}
|
||||
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) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
// console.log("(urlcheck) HANDLER URL CHECK");
|
||||
let hostname = '';
|
||||
let path = '';
|
||||
|
||||
return false;
|
||||
function pathcheck(str) {
|
||||
// console.log("(urlcheck) HANDLER PATH CHECK", str);
|
||||
if (str != undefined) {
|
||||
let final = str.split('/')[0];
|
||||
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
|
||||
console.log('(urlcheck) Tunnel application path', final);
|
||||
return 'i2ptunnelmgr';
|
||||
} else if (
|
||||
final === 'i2psnark' ||
|
||||
final === 'torrents' ||
|
||||
final.startsWith('transmission') ||
|
||||
final.startsWith('tracker') ||
|
||||
url.includes(':7662')
|
||||
) {
|
||||
console.log('(urlcheck) Torrent application path', final);
|
||||
return 'i2psnark';
|
||||
} else if (final === 'webmail' || final === 'susimail') {
|
||||
if (!url.includes('.css')) {
|
||||
console.log('(urlcheck) Mail application path', final);
|
||||
return 'webmail';
|
||||
}
|
||||
} 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 + '/', '');
|
||||
} else if (identifyProtocolHandler(url)) {
|
||||
let newurl = identifyProtocolHandler(url);
|
||||
return routerHost(newurl);
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
path = url.replace(hostname + '/', '');
|
||||
}
|
||||
if (hostname === control_host + ':' + control_port) {
|
||||
//console.log("(hostcheck) router console found on configured ports");
|
||||
return pathcheck(path);
|
||||
}
|
||||
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) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === 'localhost' + ':' + 7667) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === '127.0.0.1' + ':' + 7667) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
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:'), '');
|
||||
//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:', '');
|
||||
}
|
||||
} else if (url.includes('ext+rc:')) {
|
||||
return url.replace('ext+rc:', '');
|
||||
return url;
|
||||
}
|
||||
} else if (url.includes('ext+rc:')) {
|
||||
return url;
|
||||
}
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
function trimHost(url) {
|
||||
let hostname = '';
|
||||
let prefix = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
prefix = url.substr(0, url.indexOf('://') + 3);
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
let path = url.replace(prefix + hostname, '');
|
||||
console.log('(handler) path', prefix + hostname, path);
|
||||
return path;
|
||||
let hostname = '';
|
||||
let prefix = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
prefix = url.substr(0, url.indexOf('://') + 3);
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
let path = url.replace(prefix + hostname, '');
|
||||
console.log('(handler) path', prefix + hostname, path);
|
||||
return path;
|
||||
}
|
||||
|
||||
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);
|
||||
requestDetails.redirectUrl = rwurl;
|
||||
requestDetails.url = trimHost(rwurl);
|
||||
requestDetails.originUrl = trimHost(rwurl);
|
||||
}
|
||||
return requestDetails;
|
||||
//console.log("checking protocol handler listener")
|
||||
let rwurl = identifyProtocolHandler(requestDetails.url);
|
||||
if (rwurl != false) {
|
||||
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, {
|
||||
|
169
home.css
169
home.css
@@ -1,23 +1,19 @@
|
||||
|
||||
|
||||
* {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
margin: 0
|
||||
}
|
||||
|
||||
html {
|
||||
margin: 0 4%;
|
||||
padding: 0 20px;
|
||||
min-height: 100%;
|
||||
background: #9ab;
|
||||
background: repeating-linear-gradient(to bottom, #9ab, #89a 2px);
|
||||
scrollbar-color: #bcd #789;
|
||||
scrollbar-color: #bcd #789
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 20px 40px;
|
||||
font-family: Open Sans, Noto Sans, Segoe UI, sans-serif;
|
||||
font-family: Open Sans,Noto Sans,Segoe UI,sans-serif;
|
||||
font-size: 12pt;
|
||||
color: #495057;
|
||||
text-decoration: none;
|
||||
@@ -25,51 +21,46 @@ body {
|
||||
border-left: 1px solid #495057;
|
||||
border-right: 1px solid #495057;
|
||||
box-shadow: 0 0 2px 2px rgba(0, 0, 0, .1);
|
||||
background: #f2f2f2;
|
||||
background: #f2f2f2
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
display: block;
|
||||
font-weight: 700;
|
||||
font-weight: 700
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-transform: uppercase;
|
||||
font-weight: 900;
|
||||
font-size: 200%;
|
||||
font-size: 200%
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 140%;
|
||||
font-size: 140%
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 120%;
|
||||
font-size: 120%
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin-bottom: 5px;
|
||||
text-align: right;
|
||||
text-transform: none;
|
||||
font-size: 90%;
|
||||
font-weight: 600;
|
||||
font-style: italic;
|
||||
font-style: italic
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 15px;
|
||||
width: 100%;
|
||||
line-height: 1.4;
|
||||
word-wrap: break-word;
|
||||
text-align: justify;
|
||||
text-decoration: none;
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 10px 20px;
|
||||
list-style: none;
|
||||
list-style: none
|
||||
}
|
||||
|
||||
li {
|
||||
margin-left: 0;
|
||||
padding: 12px 15px 15px 20px;
|
||||
@@ -78,63 +69,58 @@ li {
|
||||
border: 1px solid #9ab;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff;
|
||||
background: #dee2e6;
|
||||
background: #dee2e6
|
||||
}
|
||||
|
||||
li li {
|
||||
padding-bottom: 0;
|
||||
width: calc(100% - 40px);
|
||||
text-align: left;
|
||||
border: none;
|
||||
border-top: 1px solid #9ab;
|
||||
box-shadow: none;
|
||||
box-shadow: none
|
||||
}
|
||||
|
||||
li li:first-of-type {
|
||||
margin-top: 15px;
|
||||
border-top: none;
|
||||
border-top: none
|
||||
}
|
||||
|
||||
li a:first-of-type {
|
||||
display: block;
|
||||
width: 100%;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
#applicationExplain {
|
||||
float: unset;
|
||||
float: unset
|
||||
}
|
||||
|
||||
li+li {
|
||||
margin-top: 15px;
|
||||
margin-top: 15px
|
||||
}
|
||||
|
||||
h3+ul, ul+h3, ul+h2 {
|
||||
margin-top: 20px;
|
||||
h3+ul,
|
||||
ul+h2,
|
||||
ul+h3 {
|
||||
margin-top: 20px
|
||||
}
|
||||
|
||||
a, button {
|
||||
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 {
|
||||
.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;
|
||||
@@ -142,14 +128,12 @@ button {
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0;
|
||||
outline: 0
|
||||
}
|
||||
|
||||
.background {
|
||||
background-color: #f8f8ff;
|
||||
height: 100%;
|
||||
height: 100%
|
||||
}
|
||||
|
||||
.content {
|
||||
margin: 1.5rem;
|
||||
padding: 1rem;
|
||||
@@ -158,11 +142,14 @@ button {
|
||||
display: inline-block;
|
||||
border: 1px solid #d9d9d6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
background: #f8f8ff;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
|
||||
background: #f8f8ff
|
||||
}
|
||||
|
||||
#header, .application-info, .browser-info, .extended-info, .search-info {
|
||||
#header,
|
||||
.application-info,
|
||||
.browser-info,
|
||||
.extended-info,
|
||||
.search-info {
|
||||
margin-top: 1.5rem;
|
||||
padding: 1rem;
|
||||
min-height: 3rem;
|
||||
@@ -170,15 +157,14 @@ button {
|
||||
display: inline-block;
|
||||
border: 1px solid #d9d9d6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
background: #f8f8ff;
|
||||
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
|
||||
background: #f8f8ff
|
||||
}
|
||||
|
||||
.showhider {
|
||||
margin-right: auto;
|
||||
padding: 0!important;
|
||||
text-transform: uppercase;
|
||||
background: none !important;
|
||||
background: none!important;
|
||||
border: none;
|
||||
width: 90%;
|
||||
color: #3b6bbf;
|
||||
@@ -186,19 +172,16 @@ button {
|
||||
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;
|
||||
margin-bottom: 80px
|
||||
}
|
||||
|
||||
#readyness {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
@@ -209,10 +192,9 @@ button {
|
||||
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;
|
||||
@@ -225,9 +207,8 @@ button {
|
||||
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;
|
||||
@@ -237,9 +218,8 @@ button {
|
||||
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;
|
||||
@@ -250,10 +230,10 @@ button {
|
||||
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;
|
||||
@@ -263,10 +243,9 @@ button {
|
||||
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;
|
||||
@@ -279,9 +258,8 @@ button {
|
||||
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;
|
||||
@@ -294,9 +272,8 @@ button {
|
||||
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;
|
||||
@@ -309,49 +286,41 @@ button {
|
||||
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;
|
||||
font-size: 10.5pt
|
||||
}
|
||||
}
|
||||
|
||||
video {
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.hidden {
|
||||
visibility: none;
|
||||
display: none
|
||||
|
@@ -147,6 +147,7 @@
|
||||
</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>
|
||||
|
320
host.js
320
host.js
@@ -1,177 +1,187 @@
|
||||
function proxyHost(url) {
|
||||
let hostname = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
if (hostname == 'proxy.i2p') {
|
||||
return true;
|
||||
}
|
||||
if (
|
||||
hostname == 'c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p'
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
let hostname = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
if (hostname == 'proxy.i2p') {
|
||||
return true;
|
||||
}
|
||||
if (
|
||||
hostname == 'c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p'
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function localHost(url) {
|
||||
let hostname = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
hostname = hostname.split(':')[0];
|
||||
console.log('(urlcheck) hostname localhost', hostname);
|
||||
console.log('(urlcheck) url localhost', url);
|
||||
if (hostname === '127.0.0.1') {
|
||||
if (url.indexOf('\:8084') != -1) return 'blog';
|
||||
if (url.indexOf('\:7669') != -1) return 'irc';
|
||||
} else if (hostname === 'localhost') {
|
||||
if (url.indexOf('\:8084') != -1) return 'blog';
|
||||
if (url.indexOf('\:7669') != -1) return 'irc';
|
||||
}
|
||||
let hostname = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
hostname = hostname.split(':')[0];
|
||||
console.log('(urlcheck) hostname localhost', hostname);
|
||||
console.log('(urlcheck) url localhost', url);
|
||||
if (hostname === '127.0.0.1') {
|
||||
if (url.indexOf(':8084') != -1) return 'blog';
|
||||
if (url.indexOf(':7669') != -1) return 'irc';
|
||||
if (url.indexOf(':7695') != -1) return 'tor';
|
||||
} else if (hostname === 'localhost') {
|
||||
if (url.indexOf(':8084') != -1) return 'blog';
|
||||
if (url.indexOf(':7669') != -1) return 'irc';
|
||||
if (url.indexOf(':7695') != -1) return 'tor';
|
||||
}
|
||||
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
function extensionHost(url) {
|
||||
var prefix = browser.runtime
|
||||
.getURL('')
|
||||
.replace('moz-extension://', '')
|
||||
.replace('/', '');
|
||||
if (url.originUrl !== undefined) {
|
||||
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.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);
|
||||
var prefix = browser.runtime
|
||||
.getURL('')
|
||||
.replace('moz-extension://', '')
|
||||
.replace('/', '');
|
||||
if (url.originUrl !== undefined) {
|
||||
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.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 = '';
|
||||
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;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (hostname != '') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
} else if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
console.log('(hosts) scrub', hostname);
|
||||
return hostname;
|
||||
console.log('(hosts) scrub', hostname);
|
||||
return hostname;
|
||||
}
|
||||
|
||||
function i2pHost(url) {
|
||||
let hostname = i2pHostName(url);
|
||||
return hostname.endsWith('.i2p');
|
||||
let hostname = i2pHostName(url);
|
||||
let postname = hostname.split(':')[0];
|
||||
return postname.endsWith('.i2p');
|
||||
}
|
||||
|
||||
function routerHost(url) {
|
||||
// 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) Tunnel application path', final);
|
||||
return 'i2ptunnelmgr';
|
||||
} else if (
|
||||
final === 'i2psnark' ||
|
||||
final === 'torrents' ||
|
||||
final.startsWith('transmission') ||
|
||||
final.startsWith('tracker') ||
|
||||
url.includes(':7662')
|
||||
) {
|
||||
console.log('(urlcheck) Torrent application path', final);
|
||||
return 'i2psnark';
|
||||
} else if (final === 'webmail' || final === 'susimail') {
|
||||
if (!url.includes('.css')) {
|
||||
console.log('(urlcheck) Mail application path', final);
|
||||
return 'webmail';
|
||||
// console.log("(urlcheck) 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) Tunnel application path', final);
|
||||
return 'i2ptunnelmgr';
|
||||
} else if (
|
||||
final === 'i2psnark' ||
|
||||
final === 'torrents' ||
|
||||
final.startsWith('transmission') ||
|
||||
final.startsWith('tracker') ||
|
||||
url.includes(':7662')
|
||||
) {
|
||||
console.log('(urlcheck) Torrent application path', final);
|
||||
return 'i2psnark';
|
||||
} else if (final === 'webmail' || final === 'susimail') {
|
||||
if (!url.includes('.css')) {
|
||||
console.log('(urlcheck) Mail application path', final);
|
||||
return 'webmail';
|
||||
}
|
||||
} 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';
|
||||
}
|
||||
}
|
||||
} 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;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
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 + '/', '');
|
||||
}
|
||||
if (hostname === control_host + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === 'localhost' + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === '127.0.0.1' + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === 'localhost' + ':' + 7070) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === '127.0.0.1' + ':' + 7070) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
return false;
|
||||
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 + '/', '');
|
||||
}
|
||||
if (hostname === control_host + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === 'localhost' + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === '127.0.0.1' + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === 'localhost' + ':' + 7070) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === '127.0.0.1' + ':' + 7070) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === 'localhost' + ':' + 7667) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === '127.0.0.1' + ':' + 7667) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@@ -1,415 +1,420 @@
|
||||
|
||||
if (browser.windows != undefined) {
|
||||
var hello = 'hello i2pcontrol';
|
||||
var hello = 'hello i2pcontrol';
|
||||
|
||||
function makeid(length) {
|
||||
var result = '';
|
||||
var characters =
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
var charactersLength = characters.length;
|
||||
for (var i = 0; i < length; i++) {
|
||||
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function send(
|
||||
message,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
async function postData(url = "", data = {}) {
|
||||
// Default options are marked with *
|
||||
let requestBody = JSON.stringify(data);
|
||||
//console.log("(i2pcontrol) sending request", requestBody);
|
||||
let opts = {
|
||||
method: 'POST', // *GET, POST, PUT, DELETE, etc.
|
||||
mode: 'cors', // no-cors, *cors, same-origin
|
||||
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
|
||||
credentials: 'same-origin', // include, *same-origin, omit
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
redirect: 'follow', // manual, *follow, error
|
||||
referrerPolicy: 'no-referrer', // no-referrer, *client
|
||||
body: requestBody // body data type must match "Content-Type" header
|
||||
};
|
||||
const response = await fetch(url, opts);
|
||||
return await response.json(); // parses JSON response into native JavaScript objects
|
||||
function makeid(length) {
|
||||
var result = '';
|
||||
var characters =
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
var charactersLength = characters.length;
|
||||
for (var i = 0; i < length; i++) {
|
||||
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//console.log("http://" + control_host + ":" + control_port + "/" + control_path)
|
||||
return postData(
|
||||
'http://' + control_host + ':' + control_port + '/' + control_path + '/',
|
||||
message
|
||||
);
|
||||
}
|
||||
function send(
|
||||
message,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
async function postData(url = "", data = {}) {
|
||||
// Default options are marked with *
|
||||
let requestBody = JSON.stringify(data);
|
||||
//console.log("(i2pcontrol) sending request", requestBody);
|
||||
let opts = {
|
||||
method: 'POST', // *GET, POST, PUT, DELETE, etc.
|
||||
mode: 'cors', // no-cors, *cors, same-origin
|
||||
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
|
||||
credentials: 'same-origin', // include, *same-origin, omit
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
redirect: 'follow', // manual, *follow, error
|
||||
referrerPolicy: 'no-referrer', // no-referrer, *client
|
||||
body: requestBody // body data type must match "Content-Type" header
|
||||
};
|
||||
const response = await fetch(url, opts);
|
||||
return await response.json(); // parses JSON response into native JavaScript objects
|
||||
}
|
||||
|
||||
async function authenticate(
|
||||
password = "itoopie",
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'Authenticate';
|
||||
json['params'] = new Object();
|
||||
json['params']['API'] = 1;
|
||||
json['params']['Password'] = password;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
|
||||
async function GetToken(
|
||||
password = "itoopie",
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
function gettoken(authtoken) {
|
||||
return authtoken.result.Token;
|
||||
//console.log("http://" + control_host + ":" + control_port + "/" + control_path)
|
||||
return postData(
|
||||
'http://' + control_host + ':' + control_port + '/' + control_path + '/',
|
||||
message
|
||||
);
|
||||
}
|
||||
let me = authenticate(password, control_host, control_port, control_path);
|
||||
return await me.then(gettoken);
|
||||
}
|
||||
|
||||
async function Echo(
|
||||
message,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function echo(token) {
|
||||
console.log('(i2pcontrol) testing I2PControl connection');
|
||||
async function authenticate(
|
||||
password = "itoopie",
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'Echo';
|
||||
json['method'] = 'Authenticate';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params']['Echo'] = message;
|
||||
json['params']['API'] = 1;
|
||||
json['params']['Password'] = password;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(echo);
|
||||
return done;
|
||||
}
|
||||
|
||||
function UpdateEchoElementByID(
|
||||
Query,
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
//console.log("(i2pcontrol)", update);
|
||||
if (document.getElementById(ID) !== null)
|
||||
document.getElementById(ID).innerText = update;
|
||||
async function GetToken(
|
||||
password = "itoopie",
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
function gettoken(authtoken) {
|
||||
return authtoken.result.Token;
|
||||
}
|
||||
let me = authenticate(password, control_host, control_port, control_path);
|
||||
return await me.then(gettoken);
|
||||
}
|
||||
let net = Echo(Query, control_host, control_port, control_path, password);
|
||||
net.then(updateleement);
|
||||
}
|
||||
|
||||
async function GetRate(
|
||||
Query,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function getrate(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'I2PControl';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params']['Stat'] = Query;
|
||||
json['params']['Period'] = 2000;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
async function Echo(
|
||||
message,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function echo(token) {
|
||||
console.log('(i2pcontrol) testing I2PControl connection');
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'Echo';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params']['Echo'] = message;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(echo);
|
||||
return done;
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(getrate);
|
||||
return done;
|
||||
}
|
||||
|
||||
function UpdateGetRateElementByID(
|
||||
Query,
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
//console.log("(i2pcontrol)", update);
|
||||
if (document.getElementById(ID) !== null)
|
||||
document.getElementById(ID).innerText = update;
|
||||
}
|
||||
let net = GetRate(Query, control_host, control_port, control_path, password);
|
||||
net.then(updateleement);
|
||||
}
|
||||
|
||||
async function I2PControl(
|
||||
Query,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function i2pcontrol(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'I2PControl';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(i2pcontrol);
|
||||
return done;
|
||||
}
|
||||
|
||||
function UpdateI2PControlElementByID(
|
||||
Query,
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
//console.log("(i2pcontrol)", update);
|
||||
if (document.getElementById(ID) !== null)
|
||||
document.getElementById(ID).innerText = update;
|
||||
}
|
||||
let net = I2PControl(
|
||||
function UpdateEchoElementByID(
|
||||
Query,
|
||||
control_host,
|
||||
control_port,
|
||||
control_path,
|
||||
password
|
||||
);
|
||||
net.then(updateleement);
|
||||
}
|
||||
|
||||
async function RouterInfo(
|
||||
Query,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function routerinfo(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'RouterInfo';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
//console.log("(i2pcontrol)", update);
|
||||
if (document.getElementById(ID) !== null)
|
||||
document.getElementById(ID).innerText = update;
|
||||
}
|
||||
let net = Echo(Query, control_host, control_port, control_path, password);
|
||||
net.then(updateleement);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(routerinfo);
|
||||
return done;
|
||||
}
|
||||
|
||||
function UpdateRouterInfoElementByID(
|
||||
Query,
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
/*console.log(
|
||||
async function GetRate(
|
||||
Query,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function getrate(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'I2PControl';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params']['Stat'] = Query;
|
||||
json['params']['Period'] = 2000;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(getrate);
|
||||
return done;
|
||||
}
|
||||
|
||||
function UpdateGetRateElementByID(
|
||||
Query,
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
//console.log("(i2pcontrol)", update);
|
||||
if (document.getElementById(ID) !== null)
|
||||
document.getElementById(ID).innerText = update;
|
||||
}
|
||||
let net = GetRate(
|
||||
Query,
|
||||
control_host,
|
||||
control_port,
|
||||
control_path,
|
||||
password
|
||||
);
|
||||
net.then(updateleement);
|
||||
}
|
||||
|
||||
async function I2PControl(
|
||||
Query,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function i2pcontrol(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'I2PControl';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(i2pcontrol);
|
||||
return done;
|
||||
}
|
||||
|
||||
function UpdateI2PControlElementByID(
|
||||
Query,
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
//console.log("(i2pcontrol)", update);
|
||||
if (document.getElementById(ID) !== null)
|
||||
document.getElementById(ID).innerText = update;
|
||||
}
|
||||
let net = I2PControl(
|
||||
Query,
|
||||
control_host,
|
||||
control_port,
|
||||
control_path,
|
||||
password
|
||||
);
|
||||
net.then(updateleement);
|
||||
}
|
||||
|
||||
async function RouterInfo(
|
||||
Query,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function routerinfo(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'RouterInfo';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(routerinfo);
|
||||
return done;
|
||||
}
|
||||
|
||||
function UpdateRouterInfoElementByID(
|
||||
Query,
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
/*console.log(
|
||||
"(i2pcontrol) element",
|
||||
update.result[Query],
|
||||
ID,
|
||||
document.getElementById(ID)
|
||||
);*/
|
||||
if (document.getElementById(ID) !== null)
|
||||
document.getElementById(ID).innerText = update.result[Query];
|
||||
if (document.getElementById(ID) !== null)
|
||||
document.getElementById(ID).innerText = update.result[Query];
|
||||
}
|
||||
|
||||
let net = RouterInfo(
|
||||
Query,
|
||||
control_host,
|
||||
control_port,
|
||||
control_path,
|
||||
password
|
||||
);
|
||||
net.then(updateelement);
|
||||
}
|
||||
|
||||
let net = RouterInfo(
|
||||
async function RouterManager(
|
||||
Query,
|
||||
control_host,
|
||||
control_port,
|
||||
control_path,
|
||||
password
|
||||
);
|
||||
net.then(updateelement);
|
||||
}
|
||||
|
||||
async function RouterManager(
|
||||
Query,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function routermanager(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'RouterManager';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function routermanager(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'RouterManager';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(routermanager);
|
||||
return done;
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(routermanager);
|
||||
return done;
|
||||
}
|
||||
|
||||
function UpdateRouterManagerElementByID(
|
||||
Query,
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
//console.log("(i2pcontrol)", update);
|
||||
if (document.getElementById(ID) !== null)
|
||||
function UpdateRouterManagerElementByID(
|
||||
Query,
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
//console.log("(i2pcontrol)", update);
|
||||
if (document.getElementById(ID) !== null)
|
||||
document.getElementById(ID).innerText = update;
|
||||
}
|
||||
let net = RouterManager(
|
||||
Query,
|
||||
control_host,
|
||||
control_port,
|
||||
control_path,
|
||||
password
|
||||
);
|
||||
net.then(updateleement);
|
||||
}
|
||||
|
||||
async function NetworkSetting(
|
||||
Query,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function networksetting(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'NetworkSetting';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(networksetting);
|
||||
return done;
|
||||
}
|
||||
|
||||
function UpdateNetworkSettingElementByID(
|
||||
Query,
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
//console.log("(i2pcontrol)", update);
|
||||
document.getElementById(ID).innerText = update;
|
||||
}
|
||||
let net = RouterManager(
|
||||
Query,
|
||||
control_host,
|
||||
control_port,
|
||||
control_path,
|
||||
password
|
||||
);
|
||||
net.then(updateleement);
|
||||
}
|
||||
|
||||
async function NetworkSetting(
|
||||
Query,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function networksetting(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'NetworkSetting';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
let done = await token.then(networksetting);
|
||||
return done;
|
||||
}
|
||||
|
||||
function UpdateNetworkSettingElementByID(
|
||||
Query,
|
||||
ID,
|
||||
control_host = "127.0.0.1",
|
||||
control_port = "7657",
|
||||
control_path = "jsonrpc",
|
||||
password = "itoopie"
|
||||
) {
|
||||
function updateelement(update) {
|
||||
//console.log("(i2pcontrol)", update);
|
||||
document.getElementById(ID).innerText = update;
|
||||
}
|
||||
let net = NetworkSetting(
|
||||
Query,
|
||||
control_host,
|
||||
control_port,
|
||||
control_path,
|
||||
password
|
||||
);
|
||||
net.then(updateleement);
|
||||
}
|
||||
|
||||
function UpdateContents() {
|
||||
UpdateRouterInfoElementByID('i2p.router.status', 'router-status');
|
||||
UpdateRouterInfoElementByID('i2p.router.uptime', 'router-uptime');
|
||||
UpdateRouterInfoElementByID('i2p.router.version', 'router-version');
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.inbound.1s',
|
||||
'router-net-bw-inbound-1s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.inbound.15s',
|
||||
'router-net-bw-inbound-15s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.outbound.1s',
|
||||
'router-net-bw-outbound-1s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.outbound.15s',
|
||||
'router-net-bw-outbound-15s'
|
||||
);
|
||||
UpdateRouterInfoElementByID('i2p.router.net.status', 'router-net-status');
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.tunnels.participating',
|
||||
'router-net-tunnels-participating'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.activepeers',
|
||||
'router-netdb-activepeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.fastpeers',
|
||||
'router-netdb-fastpeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.highcapacitypeers',
|
||||
'router-netdb-highcapacitypeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.isreseeding',
|
||||
'router-netdb-isreseeding'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.knownpeers',
|
||||
'router-netdb-knownpeers'
|
||||
);
|
||||
}
|
||||
|
||||
var done = Echo(hello);
|
||||
done.then(Done).catch (Done);
|
||||
|
||||
function Done(output) {
|
||||
function hide(elements) {
|
||||
elements = elements.length ? elements : [elements];
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
elements[index].style.display = 'none';
|
||||
}
|
||||
let net = NetworkSetting(
|
||||
Query,
|
||||
control_host,
|
||||
control_port,
|
||||
control_path,
|
||||
password
|
||||
);
|
||||
net.then(updateleement);
|
||||
}
|
||||
|
||||
function unhide(elements) {
|
||||
elements = elements.length ? elements : [elements];
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
elements[index].style.display = 'inline-block';
|
||||
function UpdateContents() {
|
||||
UpdateRouterInfoElementByID('i2p.router.status', 'router-status');
|
||||
UpdateRouterInfoElementByID('i2p.router.uptime', 'router-uptime');
|
||||
UpdateRouterInfoElementByID('i2p.router.version', 'router-version');
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.inbound.1s',
|
||||
'router-net-bw-inbound-1s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.inbound.15s',
|
||||
'router-net-bw-inbound-15s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.outbound.1s',
|
||||
'router-net-bw-outbound-1s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.outbound.15s',
|
||||
'router-net-bw-outbound-15s'
|
||||
);
|
||||
UpdateRouterInfoElementByID('i2p.router.net.status', 'router-net-status');
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.tunnels.participating',
|
||||
'router-net-tunnels-participating'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.activepeers',
|
||||
'router-netdb-activepeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.fastpeers',
|
||||
'router-netdb-fastpeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.highcapacitypeers',
|
||||
'router-netdb-highcapacitypeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.isreseeding',
|
||||
'router-netdb-isreseeding'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.knownpeers',
|
||||
'router-netdb-knownpeers'
|
||||
);
|
||||
}
|
||||
|
||||
var done = Echo(hello);
|
||||
done.then(Done).catch (Done);
|
||||
|
||||
function Done(output) {
|
||||
function hide(elements) {
|
||||
elements = elements.length ? elements : [elements];
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
elements[index].style.display = 'none';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log('(i2pcontrol) I2PControl connection tested,', output);
|
||||
if (output == hello) {
|
||||
var toopieLinks = document.querySelectorAll('.window-visit-toopie');
|
||||
unhide(toopieLinks);
|
||||
} else {
|
||||
var toopieLinks = document.querySelectorAll('.window-visit-toopie');
|
||||
hide(toopieLinks);
|
||||
function unhide(elements) {
|
||||
elements = elements.length ? elements : [elements];
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
elements[index].style.display = 'inline-block';
|
||||
}
|
||||
}
|
||||
|
||||
console.log('(i2pcontrol) I2PControl connection tested,', output);
|
||||
if (output == hello) {
|
||||
var toopieLinks = document.querySelectorAll('.window-visit-toopie');
|
||||
unhide(toopieLinks);
|
||||
} else {
|
||||
var toopieLinks = document.querySelectorAll('.window-visit-toopie');
|
||||
hide(toopieLinks);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
return output;
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
375
index.html
375
index.html
@@ -1,234 +1,229 @@
|
||||
<!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" />
|
||||
<title>I2P in Private Browsing Mode</title>
|
||||
<link href="home.css" rel="stylesheet" type="text/css">
|
||||
<link href="sidebar.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>I2P in Private Browsing Mode(Firefox-Only)</h1>
|
||||
<h1>I2P in Private Browsing Mode(Firefox-Only)</h1>
|
||||
|
||||
<p>This is an webextension which introduces a set of new "Private Browsing" modes
|
||||
to Firefox-based browsers(Supporting webextensions) that makes it easier to
|
||||
configure a browser to use I2P securely and adds features for making I2P
|
||||
applications easier to use. It does this by isolating I2P-specific settings to
|
||||
Contextual Identities within Firefox, then loading them automatically when the
|
||||
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>
|
||||
<p>This is an webextension which introduces a set of new "Private Browsing" modes to Firefox-based browsers(Supporting webextensions, must be current ESR or greater) that makes it easier to configure a browser to use I2P securely and adds features for making I2P applications easier to use. It does this by isolating I2P-specific settings to Contextual Identities within Firefox, then loading them automatically when the 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 and via in-browser protocol handling integrations.</p>
|
||||
|
||||
<h2>Privacy Policy</h2>
|
||||
<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 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 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>
|
||||
<p>This browser extension is entirely Free, Open-Source software.</p>
|
||||
|
||||
<h2>Installation(Cross-Platform):</h2>
|
||||
<h2>Installation(Cross-Platform):</h2>
|
||||
|
||||
<p>For desktop users this addon is available from addons.mozilla.org, where you
|
||||
will be able to recive automatic updates:
|
||||
<a href="https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/">I2P in Private Browsing</a>.</p>
|
||||
<p>For desktop users this addon is available from addons.mozilla.org, where you will be able to recive automatic updates: <a href="https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/">I2P in Private Browsing</a>.</p>
|
||||
|
||||
<h2>Debian Installation:</h2>
|
||||
<h3>Setting the Homepage</h3>
|
||||
|
||||
<p>Should you prefer, it is possible to install this extension system-wide by
|
||||
side-loading it into Debian. You can generate your own deb file by running the
|
||||
command:</p>
|
||||
<p>The first time you run the extension, Firefox will offer you the option of setting your homepage and new tab page to the homepage contained <em>within</em> the extension. You can decline this or edit it later and it will not affect your anonymity. Enabling this feature allows the extension to set your homepage to a local document with a number of useful I2P links.</p>
|
||||
|
||||
<pre><code> make deb
|
||||
<h2>Debian Installation:</h2>
|
||||
|
||||
<p>Should you prefer, it is possible to install this extension system-wide by side-loading it into Debian. You can generate your own deb file by running the command:</p>
|
||||
|
||||
<pre><code> make deb
|
||||
</code></pre>
|
||||
<p>and then you can install it with:</p>
|
||||
|
||||
<p>and then you can install it with:</p>
|
||||
|
||||
<pre><code> sudo apt install ../i2psetproxy.js_*.deb
|
||||
<pre><code> sudo apt install ../i2psetproxy.js_*.deb
|
||||
</code></pre>
|
||||
<h2>Bittorrent Download:</h2>
|
||||
|
||||
<h2>Bittorrent Download:</h2>
|
||||
<p>The self-hosted plugin is available from bittorrent both within the I2P and Clearnet Bittorrent network(With a web seed to support it in case one goes dead).</p>
|
||||
|
||||
<p>The self-hosted plugin is available from bittorrent both within the I2P and
|
||||
Clearnet Bittorrent network(With a web seed to support it in case one goes
|
||||
dead).</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="magnet:?xl=2485magnetsubdn=i2ppb%40eyedeekay.github.io.xpi.torrentmagnetsubxt=urn:tree:tiger:ny7vvcovjmgra5ryppfq2gqxoqivfy7jukrdwfamagnetsubxt=urn:ed2k:dea3f4030ba0974d83f17ca9360b9979magnetsubxt=urn:aich:7jkwuvbwckodxbgn6qtthnwp2gskftku">Magnet Link</a>
|
||||
</li>
|
||||
|
||||
<ul>
|
||||
<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>
|
||||
<li>
|
||||
<a href="./i2ppb@eyedeekay.github.io.xpi.torrent">Get the .torrent file</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Usage:</h2>
|
||||
<h2>Usage:</h2>
|
||||
|
||||
<ul>
|
||||
<li>Basically, it "Just Works." After you install the plugin, browsing to an I2P
|
||||
domain will automatically stop the current tab and re-open the I2P site in an
|
||||
I2P Browser tab.</li>
|
||||
<li>Besides that, four bookmarks are added to the "Bookmarks Toolbar," which
|
||||
will take you to visit your Java I2P applications, or the "Simplified I2P
|
||||
Landing Page" embedded in the plugin:</li>
|
||||
<li><img src="lander.png" alt="Landing page" title="" /></li>
|
||||
<li>Also, there's a menu for accessing I2P functionality while you're browsing.
|
||||
It lets you control a few settings in a granular way.</li>
|
||||
<li><img src="menu.png" alt="Menu" title="" /></li>
|
||||
<li>You can re-enable WebRTC but force it to always use the proxy that is
|
||||
enforced by the tab.</li>
|
||||
<li>You can either force the browser to delete all history for I2P sites
|
||||
immediately, or you can close all your I2P Browser tabs at once and delete
|
||||
the history for I2P browsing when you're done.</li>
|
||||
<li>That's all there is to it! Your browser is configured to safely use and
|
||||
administer I2P.</li>
|
||||
<li>Optionally, you can add I2PSnark-RPC and use Bittorrent-over-I2P via the
|
||||
transmission-rpc interface. To do this, have a look at the torrent guide:
|
||||
<a href="torrent/index.html">Torrent guide</a></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>Basically, it "Just Works." After you install the plugin, browsing to an I2P domain will automatically stop the current tab and re-open the I2P site in an I2P Browser tab.</li>
|
||||
|
||||
<h3>Features</h3>
|
||||
<li>Besides that, four bookmarks are added to the "Bookmarks Toolbar," which will take you to visit your Java I2P applications, or the "Simplified I2P Landing Page" embedded in the plugin:</li>
|
||||
|
||||
<ul>
|
||||
<li>[done] <strong>Provide</strong> a way to launch into an I2P-Specific contextual identity
|
||||
(container). Intercept requests to .i2p domains and automatically route them
|
||||
to the I2P container. Isolate the router console from other local
|
||||
applications by automatically intercepting requests to the router console to
|
||||
another container.</li>
|
||||
<li><img src="i2psetproxy.js.png" alt="Visiting i2p-projekt.i2p" title="" /></li>
|
||||
<li>[done] <strong>Indicate</strong> the I2P browser is in use visually. Find an
|
||||
acceptable way to indicate it on Android.</li>
|
||||
<li><img src="susimail.png" alt="Visiting webmail" title="" /></li>
|
||||
<li>[done] <strong>Set</strong> the http proxy to use the local I2P proxy automatically.
|
||||
Provide specific configuration for other types of I2P proxies(SOCKS,
|
||||
isolating HTTP)</li>
|
||||
<li>[done] <strong>Disable</strong> risky webRTC features/offer the option to re-enable
|
||||
them with the proxy enforced.</li>
|
||||
<li>[done] <strong>Change</strong> the color of the browser window to indicate that I2P is in
|
||||
use</li>
|
||||
<li><img src="i2ptunnel.png" alt="Visiting i2ptunnel" title="" /></li>
|
||||
<li>[ready] <strong>Provide</strong> help in a variety of languages.</li>
|
||||
<li>[done] <strong>Monitor</strong> the health and readiness of the I2P router it is
|
||||
instructed to use. Currently the plugin checks whether the HTTP Proxy is
|
||||
working by fetching an image from "http://proxy.i2p" and displaying a result.
|
||||
A work-in-progress binding to i2pcontrol is available in ./i2pcontrol, it is
|
||||
inert at this time.</li>
|
||||
<li><img src="toopie.png" alt="Visiting toopie.html" title="" /></li>
|
||||
<li>[Done] <strong>Handle</strong> router console applications under their own origins and
|
||||
within their own contextual identity. (1) The router console is automatically
|
||||
confined to it's own container tab. (2) Use a custom protocol handler to
|
||||
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. 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>[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
|
||||
browsing are "I2P Browsing" and "Web Browsing" where I2P Browsing is capable
|
||||
of using an outproxy but in the case of traffic destined for the clearnet
|
||||
does not do header rewriting, and Web Browsing falls back to the Proxy
|
||||
configured in Firefox. The I2P Browsing will be expanded to
|
||||
<ul>
|
||||
<li>I2P Amnesiac Browsing: Use for General Browsing, stores no history and
|
||||
uses an HTTP Proxy with a very short tunnel-close timeout and no key-reuse.</li>
|
||||
<li>I2P Social Networking: Use this for logging into social network accounts,
|
||||
forums, and other interactive asynchronous public communication platforms
|
||||
where your identity is behaviorally linkable. This has a very long
|
||||
tunnel-close timeout and key-reuse until specifically invoked.</li>
|
||||
<li>I2P Blogging: Use this for posting content to the web interface of your
|
||||
blog or to other similar websites that you create content on.</li>
|
||||
</ul></li>
|
||||
<li><img src="clearweb.png" alt="Visiting clearweb" title="" /></li>
|
||||
</ul>
|
||||
<li><img alt="Landing page" src="lander.png" title="">
|
||||
</li>
|
||||
|
||||
<h3>Video</h3>
|
||||
<li>Also, there's a menu for accessing I2P functionality while you're browsing. It lets you control a few settings in a granular way.</li>
|
||||
|
||||
<ul>
|
||||
<li><img src="i2psetproxy.js.gif" alt="Video of the plugin in action" title="" /></li>
|
||||
</ul>
|
||||
<li><img alt="Menu" src="menu.png" title="">
|
||||
</li>
|
||||
|
||||
<h2>Documents</h2>
|
||||
<li>You can re-enable WebRTC but force it to always use the proxy that is enforced by the tab.</li>
|
||||
|
||||
<ul>
|
||||
<li><strong><a href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/download/docs/Browser.Design.Documentation.pdf">Browser Outline</a></strong>: This document is an outline of each of
|
||||
the browser extension's feature panels in presentation form.</li>
|
||||
<li><strong><a href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/download/docs/Landing.Page.Documentation.pdf">Smart Lander Design</a></strong>: This is the original outline of
|
||||
the smart landing page which became the I2P home page within the browser and
|
||||
the drop-down control panel.</li>
|
||||
<li><strong><a href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/wiki/Other-Extensions">Other extensions</a></strong>: and how they work with this one.</li>
|
||||
</ul>
|
||||
<li>You can either force the browser to delete all history for I2P sites immediately, or you can close all your I2P Browser tabs at once and delete the history for I2P browsing when you're done.</li>
|
||||
|
||||
<h2>Super Extra Important Background Info:</h2>
|
||||
<li>That's all there is to it! Your browser is configured to safely use and administer I2P.</li>
|
||||
|
||||
<p>This plugin's viability is directly related to the viability of Mozilla and
|
||||
Tor's work on hardening Firefox itself and of particular interest are the
|
||||
"Uplift" and "Fusion(Firefox Using Onions)" projects.</p>
|
||||
<li>Optionally, you can add I2PSnark-RPC and use Bittorrent-over-I2P via the transmission-rpc interface. To do this, have a look at the torrent guide: <a href="torrent/index.html">Torrent guide</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>Links about Project Uplift</h3>
|
||||
<h3>Features</h3>
|
||||
|
||||
<ul>
|
||||
<li><a href="https://wiki.mozilla.org/Security/Tor_Uplift">Tor Uplift</a> is a project which
|
||||
brings important features of the Tor Browser to the mainstream of Firefox
|
||||
users by including patches from Tor Browser Bundle into Firefox where it is
|
||||
appropriate.</li>
|
||||
<li><a href="https://wiki.mozilla.org/Security/FirstPartyIsolation">First Party Isolation</a>
|
||||
is a feature in Firefox and other browsers which keeps information from
|
||||
leaking across first-party domains.</li>
|
||||
<li><a href="https://wiki.mozilla.org/Security/Fingerprinting">Fingerprinting</a> is a
|
||||
technique where a tracker attempts to extract unique information about a user
|
||||
from a side-channel in order to create an identifier that can be used to
|
||||
correlate the user across many sites.</li>
|
||||
<li><a href="https://wiki.mozilla.org/Security/Fennec%2BTor_Project">Fennec</a> is Firefox
|
||||
for Android and this link has some analysis of the privacy consequences of the
|
||||
Android platform.</li>
|
||||
<li><a href="https://wiki.mozilla.org/Security/Tor_Uplift/Tracking">Tracking</a> in Firefox
|
||||
is surveyed here.</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>[done] <strong>Provide</strong> a way to launch into an I2P-Specific contextual identity (container). Intercept requests to .i2p domains and automatically route them to the I2P container. Isolate the router console from other local applications by automatically intercepting requests to the router console to another container.</li>
|
||||
|
||||
<p>Project uplift seems to have largely been accomplished?</p>
|
||||
<li><img alt="Visiting i2p-projekt.i2p" src="i2psetproxy.js.png" title="">
|
||||
</li>
|
||||
|
||||
<h3>Links about Project Fusion</h3>
|
||||
<li>[done] <strong>Indicate</strong> the I2P browser is in use visually. Find an acceptable way to indicate it on Android.</li>
|
||||
|
||||
<ul>
|
||||
<li><a href="https://wiki.mozilla.org/Security/Fusion">Project Fusion</a> or Firefox using
|
||||
Onions is a joint Mozilla/Tor effort to create an enhanced Private Browsing
|
||||
mode for Firefox which uses Tor.</li>
|
||||
<li><a href="https://trac.torproject.org/projects/tor/wiki/org/meetings/2018Rome/Notes/FusionProject">Notes</a>
|
||||
from a meeting about Fusion.</li>
|
||||
<li><a href="https://blog.torproject.org/tor-heart-firefox">Tor at the Heart: Firefox</a> is
|
||||
a blog about Tor and the relationship they have to Firefox re: TBB, Fusion.</li>
|
||||
</ul>
|
||||
<li><img alt="Visiting webmail" src="susimail.png" title="">
|
||||
</li>
|
||||
|
||||
<h2>The <strong>Other</strong> Version</h2>
|
||||
<li>[done] <strong>Set</strong> the http proxy to use the local I2P proxy automatically. Provide specific configuration for other types of I2P proxies(SOCKS, isolating HTTP)</li>
|
||||
|
||||
<p>New versions of this extension create an I2P in Private Browsing mode instead,
|
||||
using container tabs.</p>
|
||||
<li>[done] <strong>Disable</strong> risky webRTC features/offer the option to re-enable them with the proxy enforced.</li>
|
||||
|
||||
<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>
|
||||
<li>[done] <strong>Change</strong> the color of the browser window to indicate that I2P is in use</li>
|
||||
|
||||
<ul>
|
||||
<li><p>This is the new version: <a href="https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/">[link]</a></p></li>
|
||||
<li><p>This is the old version: <a href="https://addons.mozilla.org/en-US/firefox/addon/I2P-Proxy/">[link]</a></p></li>
|
||||
</ul>
|
||||
<li><img alt="Visiting i2ptunnel" src="i2ptunnel.png" title="">
|
||||
</li>
|
||||
|
||||
<h2>Android usage:</h2>
|
||||
<li>[ready] <strong>Provide</strong> help in a variety of languages.</li>
|
||||
|
||||
<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>
|
||||
<li>[done] <strong>Monitor</strong> the health and readiness of the I2P router it is instructed to use. Currently the plugin checks whether the HTTP Proxy is working by fetching an image from "http://proxy.i2p" and displaying a result. A work-in-progress binding to i2pcontrol is available in ./i2pcontrol, it is inert at this time.</li>
|
||||
|
||||
<li><img alt="Visiting toopie.html" src="toopie.png" title="">
|
||||
</li>
|
||||
|
||||
<li>[Done] <strong>Handle</strong> router console applications under their own origins and within their own contextual identity. (1) The router console is automatically confined to it's own container tab. (2) Use a custom protocol handler to 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 alt="Visiting routerconsole" src="routerconsole.png" 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. Enable the use of I2PSnark as a peer-to-peer delivery mechanism for media files.</li>
|
||||
|
||||
<li><img alt="Visiting i2psnark" src="i2psnark.png" title="">
|
||||
</li>
|
||||
|
||||
<li><img alt="Monitoring torrents" src="transmissionrpc.png" title="">
|
||||
</li>
|
||||
|
||||
<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 alt="Distribute your site as a torrent." src="x-i2p-torrentlocation.png" 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 alt="Use HTTPS with your I2P Site." src="i2p-https.png" 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 browsing are "I2P Browsing" and "Web Browsing" where I2P Browsing is capable of using an outproxy but in the case of traffic destined for the clearnet does not do header rewriting, and Web Browsing falls back to the Proxy configured in Firefox. The I2P Browsing will be expanded to
|
||||
<ul>
|
||||
<li>I2P Amnesiac Browsing: Use for General Browsing, stores no history and uses an HTTP Proxy with a very short tunnel-close timeout and no key-reuse.</li>
|
||||
|
||||
<li>I2P Social Networking: Use this for logging into social network accounts, forums, and other interactive asynchronous public communication platforms where your identity is behaviorally linkable. This has a very long tunnel-close timeout and key-reuse until specifically invoked.</li>
|
||||
|
||||
<li>I2P Blogging: Use this for posting content to the web interface of your blog or to other similar websites that you create content on.</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li><img alt="Visiting clearweb" src="clearweb.png" title="">
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>Video</h3>
|
||||
|
||||
<ul>
|
||||
<li><img alt="Video of the plugin in action" src="i2psetproxy.js.gif" title="">
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Documents</h2>
|
||||
|
||||
<ul>
|
||||
<li><strong><a href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/download/docs/Browser.Design.Documentation.pdf">Browser Outline</a></strong>: This document is an outline of each of the browser extension's feature panels in presentation form.</li>
|
||||
|
||||
<li><strong><a href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/download/docs/Landing.Page.Documentation.pdf">Smart Lander Design</a></strong>: This is the original outline of the smart landing page which became the I2P home page within the browser and the drop-down control panel.</li>
|
||||
|
||||
<li><strong><a href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/wiki/Other-Extensions">Other extensions</a></strong>: and how they work with this one.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Super Extra Important Background Info:</h2>
|
||||
|
||||
<p>This plugin's viability is directly related to the viability of Mozilla and Tor's work on hardening Firefox itself and of particular interest are the "Uplift" and "Fusion(Firefox Using Onions)" projects.</p>
|
||||
|
||||
<h3>Links about Project Uplift</h3>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://wiki.mozilla.org/Security/Tor_Uplift">Tor Uplift</a> is a project which brings important features of the Tor Browser to the mainstream of Firefox users by including patches from Tor Browser Bundle into Firefox where it is appropriate.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://wiki.mozilla.org/Security/FirstPartyIsolation">First Party Isolation</a> is a feature in Firefox and other browsers which keeps information from leaking across first-party domains.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://wiki.mozilla.org/Security/Fingerprinting">Fingerprinting</a> is a technique where a tracker attempts to extract unique information about a user from a side-channel in order to create an identifier that can be used to correlate the user across many sites.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://wiki.mozilla.org/Security/Fennec%2BTor_Project">Fennec</a> is Firefox for Android and this link has some analysis of the privacy consequences of the Android platform.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://wiki.mozilla.org/Security/Tor_Uplift/Tracking">Tracking</a> in Firefox is surveyed here.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>Project uplift seems to have largely been accomplished?</p>
|
||||
|
||||
<h3>Links about Project Fusion</h3>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://wiki.mozilla.org/Security/Fusion">Project Fusion</a> or Firefox using Onions is a joint Mozilla/Tor effort to create an enhanced Private Browsing mode for Firefox which uses Tor.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://trac.torproject.org/projects/tor/wiki/org/meetings/2018Rome/Notes/FusionProject">Notes</a> from a meeting about Fusion.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="https://blog.torproject.org/tor-heart-firefox">Tor at the Heart: Firefox</a> is a blog about Tor and the relationship they have to Firefox re: TBB, Fusion.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>The <strong>Other</strong> Version</h2>
|
||||
|
||||
<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>
|
||||
<li>
|
||||
<p>This is the new version: <a href="https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/">[link]</a></p>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<p>This is the old version: <a href="https://addons.mozilla.org/en-US/firefox/addon/I2P-Proxy/">[link]</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Android usage:</h2>
|
||||
|
||||
<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>
|
||||
|
593
info.js
593
info.js
@@ -1,365 +1,368 @@
|
||||
function checkPeerConnection() {
|
||||
let getting = browser.privacy.network.peerConnectionEnabled.get({});
|
||||
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;
|
||||
});
|
||||
let getting = browser.privacy.network.peerConnectionEnabled.get({});
|
||||
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;
|
||||
});
|
||||
}
|
||||
|
||||
checkPeerConnection();
|
||||
|
||||
function checkSnowflake() {
|
||||
try {
|
||||
function snowflake(snowflake) {
|
||||
console.log("snowflake plugin found, leaving WebRTC alone", snowflake);
|
||||
AssurePeerConnection();
|
||||
try {
|
||||
function snowflake(snowflake) {
|
||||
console.log("snowflake plugin found, leaving WebRTC alone", snowflake);
|
||||
AssurePeerConnection();
|
||||
}
|
||||
var snowflakeInfo = browser.management.get(
|
||||
"{b11bea1f-a888-4332-8d8a-cec2be7d24b9}"
|
||||
);
|
||||
snowflakeInfo.then(snowflake);
|
||||
} catch (err) {
|
||||
console.log("snowflake not found", err);
|
||||
}
|
||||
var snowflakeInfo = browser.management.get(
|
||||
"{b11bea1f-a888-4332-8d8a-cec2be7d24b9}" // string
|
||||
);
|
||||
snowflakeInfo.then(snowflake);
|
||||
} catch {
|
||||
console.log("snowflake not found");
|
||||
}
|
||||
}
|
||||
|
||||
checkSnowflake();
|
||||
|
||||
function checkHistory() {
|
||||
let getting = browser.storage.local.get("disable_history");
|
||||
getting.then((got) => {
|
||||
let disable_history = got.disable_history;
|
||||
if (disable_history == undefined) {
|
||||
disable_history = false;
|
||||
}
|
||||
console.log("checking history", disable_history);
|
||||
if (document.getElementById("disable-history") !== null)
|
||||
document.getElementById("disable-history").checked = disable_history;
|
||||
});
|
||||
let getting = browser.storage.local.get("disable_history");
|
||||
getting.then((got) => {
|
||||
let disable_history = got.disable_history;
|
||||
if (disable_history == undefined) {
|
||||
disable_history = false;
|
||||
}
|
||||
console.log("checking history", disable_history);
|
||||
if (document.getElementById("disable-history") !== null)
|
||||
document.getElementById("disable-history").checked = disable_history;
|
||||
});
|
||||
}
|
||||
|
||||
checkHistory();
|
||||
|
||||
document.addEventListener("click", (clickEvent) => {
|
||||
if (clickEvent.target.id === "window-create-help-panel") {
|
||||
let createData = {
|
||||
type: "panel",
|
||||
incognito: true,
|
||||
};
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(() => {
|
||||
console.log("The help panel has been created");
|
||||
});
|
||||
} else if (clickEvent.target.id === "window-create-news-panel") {
|
||||
let createData = {
|
||||
type: "panel",
|
||||
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");
|
||||
const Http = new XMLHttpRequest();
|
||||
const url = "http://" + controlHost + ":" + controlPort;
|
||||
Http.open("GET", url);
|
||||
Http.send();
|
||||
Http.onreadystatechange = (event) => {
|
||||
console.log(Http.responseText);
|
||||
};
|
||||
if (clickEvent.target.id === "window-create-help-panel") {
|
||||
let createData = {
|
||||
type: "panel",
|
||||
incognito: true,
|
||||
};
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(() => {
|
||||
console.log("The help panel has been created");
|
||||
});
|
||||
} else if (clickEvent.target.id === "window-create-news-panel") {
|
||||
let createData = {
|
||||
type: "panel",
|
||||
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");
|
||||
const Http = new XMLHttpRequest();
|
||||
const url = "http://" + controlHost + ":" + controlPort;
|
||||
Http.open("GET", url);
|
||||
Http.send();
|
||||
Http.onreadystatechange = (event) => {
|
||||
console.log(Http.responseText);
|
||||
};
|
||||
}
|
||||
refreshIdentity();
|
||||
} else if (clickEvent.target.id === "label-router-restart") {
|
||||
console.log("attempting to initiate graceful restart");
|
||||
RouterManager("RestartGraceful");
|
||||
} 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();
|
||||
} else if (clickEvent.target.id === "browser-action") {
|
||||
console.log("showing a browser action");
|
||||
showBrowsing();
|
||||
} else if (clickEvent.target.id === "torrent-action") {
|
||||
console.log("showing a torrent action");
|
||||
showTorrentsMenu();
|
||||
} else if (clickEvent.target.id === "window-preface-title") {
|
||||
console.log("attempting to create homepage tab");
|
||||
goHome();
|
||||
} 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 === "torrentui-opener") {
|
||||
console.log("attempting to create torrent tab");
|
||||
goSnark();
|
||||
} 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();
|
||||
} else if (clickEvent.target.id === "window-visit-toopie") {
|
||||
console.log("attempting to create toopie tab");
|
||||
goToopie();
|
||||
} else if (clickEvent.target.id === "window-visit-i2ptunnel") {
|
||||
console.log("attempting to create i2ptunnel tab");
|
||||
goTunnel();
|
||||
} else if (clickEvent.target.id === "window-visit-susimail") {
|
||||
console.log("attempting to create susimail tab");
|
||||
goMail();
|
||||
} else if (clickEvent.target.id === "window-visit-snark") {
|
||||
console.log("attempting to create snark tab");
|
||||
goSnark();
|
||||
} else if (clickEvent.target.id === "clear-browser-data") {
|
||||
forgetBrowsingData();
|
||||
} else if (clickEvent.target.id === "check-i2p-control") {
|
||||
//echo("I2P Router Detected", "panel-section-i2pcontrol-check");
|
||||
} else if (clickEvent.target.id === "enable-web-rtc") {
|
||||
if (clickEvent.target.checked) {
|
||||
browser.runtime.sendMessage({ rtc: "enableWebRTC" });
|
||||
} else {
|
||||
browser.runtime.sendMessage({ rtc: "disableWebRTC" });
|
||||
}
|
||||
checkPeerConnection();
|
||||
return;
|
||||
} else if (clickEvent.target.id === "disable-history") {
|
||||
if (clickEvent.target.checked) {
|
||||
browser.runtime.sendMessage({ history: "disableHistory" });
|
||||
} else {
|
||||
browser.runtime.sendMessage({ history: "enableHistory" });
|
||||
}
|
||||
return;
|
||||
}
|
||||
refreshIdentity();
|
||||
} else if (clickEvent.target.id === "label-router-restart") {
|
||||
console.log("attempting to initiate graceful restart");
|
||||
RouterManager("RestartGraceful");
|
||||
} 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();
|
||||
} else if (clickEvent.target.id === "browser-action") {
|
||||
console.log("showing a browser action");
|
||||
showBrowsing();
|
||||
} else if (clickEvent.target.id === "torrent-action") {
|
||||
console.log("showing a torrent action");
|
||||
showTorrentsMenu();
|
||||
} else if (clickEvent.target.id === "window-preface-title") {
|
||||
console.log("attempting to create homepage tab");
|
||||
goHome();
|
||||
} 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();
|
||||
} else if (clickEvent.target.id === "window-visit-toopie") {
|
||||
console.log("attempting to create toopie tab");
|
||||
goToopie();
|
||||
} else if (clickEvent.target.id === "window-visit-i2ptunnel") {
|
||||
console.log("attempting to create i2ptunnel tab");
|
||||
goTunnel();
|
||||
} else if (clickEvent.target.id === "window-visit-susimail") {
|
||||
console.log("attempting to create susimail tab");
|
||||
goMail();
|
||||
} else if (clickEvent.target.id === "window-visit-snark") {
|
||||
console.log("attempting to create snark tab");
|
||||
goSnark();
|
||||
} else if (clickEvent.target.id === "clear-browser-data") {
|
||||
forgetBrowsingData();
|
||||
} else if (clickEvent.target.id === "check-i2p-control") {
|
||||
//echo("I2P Router Detected", "panel-section-i2pcontrol-check");
|
||||
} else if (clickEvent.target.id === "enable-web-rtc") {
|
||||
if (clickEvent.target.checked) {
|
||||
browser.runtime.sendMessage({ rtc: "enableWebRTC" });
|
||||
} else {
|
||||
browser.runtime.sendMessage({ rtc: "disableWebRTC" });
|
||||
}
|
||||
checkPeerConnection();
|
||||
return;
|
||||
} else if (clickEvent.target.id === "disable-history") {
|
||||
if (clickEvent.target.checked) {
|
||||
browser.runtime.sendMessage({ history: "disableHistory" });
|
||||
} else {
|
||||
browser.runtime.sendMessage({ history: "enableHistory" });
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
clickEvent.preventDefault();
|
||||
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";
|
||||
}
|
||||
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);
|
||||
console.log(this.responseText);
|
||||
}
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os != "android") {
|
||||
browser.history.onVisited.addListener(onVisited);
|
||||
}
|
||||
if (got.os != "android") {
|
||||
browser.history.onVisited.addListener(onVisited);
|
||||
}
|
||||
});
|
||||
|
||||
function showBrowsing() {
|
||||
var x = document.getElementById("browserpanel");
|
||||
x.style.display = "block";
|
||||
var y = document.getElementById("torrentpanel");
|
||||
y.style.display = "none";
|
||||
var x = document.getElementById("browserpanel");
|
||||
x.style.display = "block";
|
||||
var y = document.getElementById("torrentpanel");
|
||||
y.style.display = "none";
|
||||
}
|
||||
|
||||
function showTorrentsMenu() {
|
||||
var x = document.getElementById("browserpanel");
|
||||
x.style.display = "none";
|
||||
var y = document.getElementById("torrentpanel");
|
||||
y.style.display = "block";
|
||||
var x = document.getElementById("browserpanel");
|
||||
x.style.display = "none";
|
||||
var y = document.getElementById("torrentpanel");
|
||||
y.style.display = "block";
|
||||
}
|
||||
|
||||
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",
|
||||
};
|
||||
console.log("visiting homepage");
|
||||
let creating = browser.tabs.create(createRhizomeData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
} else {
|
||||
let createData = {
|
||||
url: "home.html",
|
||||
};
|
||||
console.log("visiting homepage");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
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",
|
||||
};
|
||||
console.log("visiting homepage");
|
||||
let creating = browser.tabs.create(createRhizomeData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
} else {
|
||||
let createData = {
|
||||
url: "home.html",
|
||||
};
|
||||
console.log("visiting homepage");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
}
|
||||
console.log("(bookmarks) adding home page bookmark");
|
||||
}
|
||||
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);
|
||||
}
|
||||
console.log("(bookmarks) adding home page bookmark");
|
||||
}
|
||||
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 not created");
|
||||
}
|
||||
let createData = {
|
||||
url: "index.html",
|
||||
};
|
||||
console.log("visiting help");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
function onTabError() {
|
||||
console.log("Help tab not created");
|
||||
}
|
||||
let createData = {
|
||||
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 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 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");
|
||||
}
|
||||
console.log("visiting toopie");
|
||||
let creating = browser.sidebarAction.open();
|
||||
creating.then(onTabCreated, onTabError);
|
||||
function onTabError() {
|
||||
console.log("Toopie tab created");
|
||||
}
|
||||
console.log("visiting toopie");
|
||||
let creating = browser.sidebarAction.open();
|
||||
creating.then(onTabCreated, onTabError);
|
||||
}
|
||||
|
||||
function onTabCreated() {
|
||||
console.log("Tab Created");
|
||||
console.log("Tab Created");
|
||||
}
|
||||
|
||||
function goSearch() {
|
||||
function onTabError() {
|
||||
console.log("Search tab created");
|
||||
}
|
||||
let createData = {
|
||||
url:
|
||||
"http://yacy.idk.i2p/yacysearch.html?" +
|
||||
"query=" +
|
||||
document.getElementById("search-query").value,
|
||||
};
|
||||
console.log("visiting legwork");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
function onTabError() {
|
||||
console.log("Search tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://legwork.i2p/yacysearch.html?" +
|
||||
"query=" +
|
||||
document.getElementById("search-query").value,
|
||||
};
|
||||
console.log("visiting legwork");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
}
|
||||
|
||||
function routerAddr() {
|
||||
if (!control_host) var control_host = "127.0.0.1";
|
||||
if (!control_port) var control_port = "7657";
|
||||
return control_host + ":" + control_port;
|
||||
if (!control_host) var control_host = "127.0.0.1";
|
||||
if (!control_port) var control_port = "7657";
|
||||
return control_host + ":" + control_port;
|
||||
}
|
||||
|
||||
function goTunnel() {
|
||||
function onTabError() {
|
||||
console.log("I2PTunnel tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/i2ptunnel",
|
||||
};
|
||||
console.log("visiting i2ptunnel");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
function onTabError() {
|
||||
console.log("I2PTunnel tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/i2ptunnel",
|
||||
};
|
||||
console.log("visiting i2ptunnel");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
}
|
||||
|
||||
function goMail() {
|
||||
function onTabError() {
|
||||
console.log("Mail tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/susimail",
|
||||
};
|
||||
console.log("visiting mail");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating(onTabCreated, onTabError);
|
||||
function onTabError() {
|
||||
console.log("Mail tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/susimail",
|
||||
};
|
||||
console.log("visiting mail");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating(onTabCreated, onTabError);
|
||||
}
|
||||
|
||||
function goSnark() {
|
||||
function onTabError() {
|
||||
console.log("Snark tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/i2psnark",
|
||||
};
|
||||
console.log("visiting snark");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
function onTabError() {
|
||||
console.log("Snark tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/i2psnark",
|
||||
};
|
||||
console.log("visiting snark");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
}
|
||||
|
||||
function onVisited(historyItem) {
|
||||
function onCleaned(results) {
|
||||
if (results.length) {
|
||||
console.log(" was not removed");
|
||||
} else {
|
||||
console.log(" was removed");
|
||||
function onCleaned(results) {
|
||||
if (results.length) {
|
||||
console.log(" was not removed");
|
||||
} else {
|
||||
console.log(" was removed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onRemoved() {
|
||||
var searching = browser.history.search({
|
||||
text: historyItem.url,
|
||||
startTime: 0,
|
||||
});
|
||||
searching.then(onCleaned);
|
||||
}
|
||||
if (!history) {
|
||||
if (i2pHost(historyItem.url)) {
|
||||
var deletingUrl = browser.history.deleteUrl(historyItem.url);
|
||||
function onRemoved() {
|
||||
var searching = browser.history.search({
|
||||
text: historyItem.url,
|
||||
startTime: 0,
|
||||
});
|
||||
searching.then(onCleaned);
|
||||
}
|
||||
if (!history) {
|
||||
if (i2pHost(historyItem.url)) {
|
||||
var deletingUrl = browser.history.deleteUrl(historyItem.url);
|
||||
}
|
||||
deletingUrl.then(onRemoved);
|
||||
}
|
||||
deletingUrl.then(onRemoved);
|
||||
}
|
||||
}
|
||||
|
||||
if (UpdateContents !== undefined) UpdateContents();
|
||||
@@ -367,15 +370,15 @@ if (UpdateContents !== undefined) UpdateContents();
|
||||
const minutes = 0.2;
|
||||
const interval = minutes * 60 * 1000;
|
||||
|
||||
setInterval(function () {
|
||||
if (UpdateContents !== undefined) UpdateContents();
|
||||
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");
|
||||
if (myJson.status == 200) {
|
||||
let irc = document.getElementById("visit-irc");
|
||||
if (irc != null) {
|
||||
irc.classList.remove("hidden");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
179
manifest.json
179
manifest.json
@@ -1,80 +1,105 @@
|
||||
{
|
||||
"applications": {
|
||||
"gecko": {
|
||||
"id": "i2ppb@eyedeekay.github.io",
|
||||
"strict_min_version": "85.0"
|
||||
}
|
||||
},
|
||||
"permissions": [
|
||||
"theme",
|
||||
"alarms",
|
||||
"browsingData",
|
||||
"management",
|
||||
"notifications",
|
||||
"proxy",
|
||||
"privacy",
|
||||
"storage",
|
||||
"webNavigation",
|
||||
"webRequest",
|
||||
"webRequestBlocking",
|
||||
"contextualIdentities",
|
||||
"cookies",
|
||||
"tabs",
|
||||
"<all_urls>"
|
||||
],
|
||||
"manifest_version": 2,
|
||||
"name": "__MSG_extensionName__",
|
||||
"version": "0.113",
|
||||
"description": "__MSG_extensionDescription__",
|
||||
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
|
||||
"icons": {
|
||||
"48": "icons/i2plogo.png"
|
||||
},
|
||||
"browser_action": {
|
||||
"browser_style": true,
|
||||
"default_icon": "icons/i2plogo.png",
|
||||
"default_title": "__MSG_extensionName__",
|
||||
"default_popup": "window.html"
|
||||
},
|
||||
"page_action": {
|
||||
"browser_style": true,
|
||||
"default_title": "__MSG_toopieTLS__",
|
||||
"default_icon": "icons/i2plogo.png",
|
||||
"show_matches": [
|
||||
"http://*.i2p/*",
|
||||
"https://*.i2p/*",
|
||||
"http://*.b32.i2p/*",
|
||||
"https://*.b32.i2p/*"
|
||||
"browser_specific_settings": {
|
||||
"gecko": {
|
||||
"id": "i2ppb@eyedeekay.github.io",
|
||||
"strict_min_version": "91.1.0"
|
||||
}
|
||||
},
|
||||
"permissions": [
|
||||
"theme",
|
||||
"alarms",
|
||||
"browsingData",
|
||||
"bookmarks",
|
||||
"contextMenus",
|
||||
"management",
|
||||
"notifications",
|
||||
"proxy",
|
||||
"privacy",
|
||||
"storage",
|
||||
"webNavigation",
|
||||
"webRequest",
|
||||
"webRequestBlocking",
|
||||
"contextualIdentities",
|
||||
"cookies",
|
||||
"history",
|
||||
"tabs",
|
||||
"<all_urls>"
|
||||
],
|
||||
"pinned": true
|
||||
},
|
||||
"options_ui": {
|
||||
"page": "options/options.html"
|
||||
},
|
||||
"content_scripts": [
|
||||
{
|
||||
"matches": ["<all_urls>"],
|
||||
"js": ["script.js"]
|
||||
"manifest_version": 2,
|
||||
"name": "__MSG_extensionName__",
|
||||
"version": "0.131",
|
||||
"description": "__MSG_extensionDescription__",
|
||||
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
|
||||
"icons": {
|
||||
"48": "icons/i2plogo.png"
|
||||
},
|
||||
"browser_action": {
|
||||
"browser_style": true,
|
||||
"default_icon": "icons/i2plogo.png",
|
||||
"default_title": "__MSG_extensionName__",
|
||||
"default_popup": "window.html"
|
||||
},
|
||||
"sidebar_action": {
|
||||
"browser_style": true,
|
||||
"default_icon": "icons/i2plogo.png",
|
||||
"default_title": "__MSG_toopieName__",
|
||||
"default_panel": "toopie.html",
|
||||
"open_at_install": false
|
||||
},
|
||||
"page_action": {
|
||||
"browser_style": true,
|
||||
"default_title": "__MSG_toopieTLS__",
|
||||
"default_icon": "icons/i2plogo.png",
|
||||
"show_matches": [
|
||||
"http://*.i2p/*",
|
||||
"https://*.i2p/*",
|
||||
"http://*.b32.i2p/*",
|
||||
"https://*.b32.i2p/*"
|
||||
],
|
||||
"pinned": true
|
||||
},
|
||||
"options_ui": {
|
||||
"page": "options/options.html"
|
||||
},
|
||||
"content_scripts": [{
|
||||
"matches": ["<all_urls>"],
|
||||
"js": ["script.js"]
|
||||
}],
|
||||
"background": {
|
||||
"persistent": true,
|
||||
"scripts": [
|
||||
"config.js",
|
||||
"torrent/common.js",
|
||||
"torrent/background.js",
|
||||
"i2pcontrol/i2pcontrol.js",
|
||||
"host.js",
|
||||
"privacy.js",
|
||||
"platform.js",
|
||||
"background.js",
|
||||
"handler.js",
|
||||
"proxy.js",
|
||||
"info.js",
|
||||
"home.js",
|
||||
"scrub.js",
|
||||
"bookmarks.js"
|
||||
]
|
||||
},
|
||||
"protocol_handlers": [{
|
||||
"protocol": "ext+rc",
|
||||
"name": "RouterConsole",
|
||||
"uriTemplate": "http://127.0.0.1:7657/%s"
|
||||
},
|
||||
{
|
||||
"protocol": "magnet",
|
||||
"name": "I2PTorrent",
|
||||
"uriTemplate": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s&action=Add&foo=Add+torrent"
|
||||
}
|
||||
],
|
||||
"default_locale": "en",
|
||||
"chrome_settings_overrides": {
|
||||
"homepage": "home.html"
|
||||
},
|
||||
"chrome_url_overrides": {
|
||||
"newtab": "home.html"
|
||||
}
|
||||
],
|
||||
"background": {
|
||||
"persistent": true,
|
||||
"scripts": [
|
||||
"config.js",
|
||||
"torrent/common.js",
|
||||
"torrent/background.js",
|
||||
"i2pcontrol/i2pcontrol.js",
|
||||
"host.js",
|
||||
"privacy.js",
|
||||
"platform.js",
|
||||
"background.js",
|
||||
"handler.js",
|
||||
"proxy.js",
|
||||
"info.js",
|
||||
"home.js",
|
||||
"scrub.js",
|
||||
"bookmarks.js"
|
||||
]
|
||||
},
|
||||
"default_locale": "en"
|
||||
}
|
||||
}
|
@@ -20,21 +20,20 @@
|
||||
</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>
|
||||
<span class="title">Bookmarks Status:</span> <input id="bookmarksState" name="bookmarksstate" type="checkbox" value="bookmarksstate"> <label for="bookmarksState">Bookmarks were created at install-time. <button id="bookmarksButton" type="submit">Re-Create Bookmarks</button></label>
|
||||
</section>
|
||||
|
||||
<section class="scheme-options proxy-options" id="proxy-options">
|
||||
<label for="bookmarksState"></label>
|
||||
<div class="title">
|
||||
Proxy Options
|
||||
<label for="bookmarksState">Proxy Options</label>
|
||||
</div>
|
||||
<p id="proxyHelpText">
|
||||
<label for="bookmarksState"></label>
|
||||
<p id="proxyHelpText"><label for="bookmarksState"></label>
|
||||
</p>
|
||||
<label id="portText">Host:</label> <input data="host" id="host" type="text" value="127.0.0.1">
|
||||
<label for="bookmarksState"><label id="portText">Host:</label> <input data="host" id="host" type="text" value="127.0.0.1">
|
||||
<br>
|
||||
<label id="hostText">Port:</label> <input data="port" id="port" type="text" value="4444">
|
||||
<label id="hostText">Port:</label> <input data="port" id="port" type="text" value="4444"></label>
|
||||
</section>
|
||||
<!--<section class="scheme-options identity-options">
|
||||
<div class="panel">
|
||||
@@ -89,7 +88,7 @@
|
||||
</div>
|
||||
</section>
|
||||
<input id="save-button" type="button" value="Save preferences">
|
||||
<script src="options.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>
|
||||
|
@@ -446,10 +446,11 @@ function i2pHostName(url) {
|
||||
|
||||
function i2pHost(url) {
|
||||
let hostname = i2pHostName(url);
|
||||
if (hostname.endsWith(".i2p")) {
|
||||
console.log("(hostname) i2p", hostname);
|
||||
let postname = hostname.split(":")[0];
|
||||
if (postname.endsWith(".i2p")) {
|
||||
console.log("(hostname) i2p", postname);
|
||||
}
|
||||
return hostname.endsWith(".i2p");
|
||||
return postname.endsWith(".i2p");
|
||||
}
|
||||
|
||||
function onContextGotLog(contexts) {
|
||||
|
743
proxy.js
743
proxy.js
@@ -10,400 +10,459 @@ var muwirepref = chrome.i18n.getMessage('muwirePreface');
|
||||
var botepref = chrome.i18n.getMessage('botePreface');
|
||||
var blogpref = chrome.i18n.getMessage('blogPreface');
|
||||
var blogprefpriv = chrome.i18n.getMessage('blogPrefacePrivate');
|
||||
var torpref = chrome.i18n.getMessage('torPreface');
|
||||
var torprefpriv = chrome.i18n.getMessage('torPreface');
|
||||
|
||||
browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: true
|
||||
value: true
|
||||
});
|
||||
|
||||
chrome.privacy.network.networkPredictionEnabled.set({
|
||||
value: false
|
||||
value: false
|
||||
});
|
||||
chrome.privacy.network.webRTCIPHandlingPolicy.set({
|
||||
value: 'disable_non_proxied_udp'
|
||||
value: 'disable_non_proxied_udp'
|
||||
});
|
||||
console.log('Disabled unproxied UDP.');
|
||||
|
||||
function shouldProxyRequest(requestInfo) {
|
||||
return requestInfo.parentFrameId != -1;
|
||||
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;
|
||||
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;
|
||||
}
|
||||
}
|
||||
if (requestDetails.url.includes(':7669')) {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
/* This is **NOT** the tor SOCKS5 proxy.
|
||||
These are the rules for visiting the SOCKS5 proxy manager.
|
||||
*/
|
||||
function torProxy() {
|
||||
if (!requestDetails.url.includes('7695')) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
return proxy;
|
||||
}
|
||||
if (requestDetails.url.includes(':7695')) {
|
||||
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;
|
||||
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;
|
||||
}
|
||||
}
|
||||
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 = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
|
||||
if (context == 'firefox-default' || context == 'firefox-private') {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
}
|
||||
|
||||
if (context != undefined) {
|
||||
console.log('(proxy), context', context);
|
||||
function btProxy() {
|
||||
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) {
|
||||
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;
|
||||
if (requestDetails.url.includes(':7662')) {
|
||||
proxy = null;
|
||||
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 = {
|
||||
console.log('(bt proxy)', proxy);
|
||||
return proxy;
|
||||
}
|
||||
|
||||
function mainProxy() {
|
||||
console.log('(proxy) mainproxy 0');
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
} else {
|
||||
proxy = null;
|
||||
}
|
||||
if (requestDetails.url.includes('rpc')) {
|
||||
console.log('(proxy for rpc url)', rpc);
|
||||
}
|
||||
//var tab = tabGet(requestDetails.tabId);
|
||||
//tab.then(handleTabRequest,)
|
||||
return proxy;
|
||||
}
|
||||
};
|
||||
var contextGet = async function(tabInfo) {
|
||||
try {
|
||||
context = await browser.contextualIdentities.get(tabInfo.cookieStoreId);
|
||||
return context;
|
||||
} catch (error) {
|
||||
console.warn(error);
|
||||
return 'firefox-default';
|
||||
}
|
||||
};
|
||||
var tabGet = async function(tabId) {
|
||||
try {
|
||||
let tabInfo = await browser.tabs.get(tabId);
|
||||
return tabInfo;
|
||||
} catch (error) {
|
||||
console.log('(proxy)Tab error', error);
|
||||
}
|
||||
};
|
||||
if (proxyHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
return proxy;
|
||||
}
|
||||
if (requestDetails.originUrl == browser.runtime.getURL('security.html')) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
return proxy;
|
||||
}
|
||||
if (
|
||||
requestDetails.cookieStoreId == 'firefox-default' ||
|
||||
requestDetails.cookieStoreId == 'firefox-private'
|
||||
) {
|
||||
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(),
|
||||
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;
|
||||
} 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);
|
||||
return proxy;
|
||||
} else if (extensionHost(requestDetails)) {
|
||||
return;
|
||||
} else {
|
||||
var tab = tabGet(requestDetails.tabId);
|
||||
var context = tab.then(contextGet);
|
||||
var proxy = await context.then(handleProxyRequest);
|
||||
//console.log("(proxy)Returning I2P Proxy", proxy);
|
||||
return proxy;
|
||||
}
|
||||
/*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);
|
||||
}
|
||||
|
||||
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 = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
|
||||
if (context == 'firefox-default' || context == 'firefox-private') {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-negated-condition
|
||||
if (context != undefined) {
|
||||
console.log('(proxy), context', context);
|
||||
if (context.name == ircpref) {
|
||||
proxy = ircProxy();
|
||||
return proxy;
|
||||
} else if (context.name == torpref) {
|
||||
proxy = torProxy();
|
||||
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) {
|
||||
proxy = routerProxy();
|
||||
return proxy;
|
||||
} else if (context.name == torrentpref) {
|
||||
proxy = btProxy();
|
||||
return proxy;
|
||||
} else if (context.name == mailpref) {
|
||||
proxy = routerProxy();
|
||||
return proxy;
|
||||
} else if (context.name == tunnelpref) {
|
||||
proxy = routerProxy();
|
||||
return proxy;
|
||||
} else if (context.name == muwirepref) {
|
||||
proxy = routerProxy();
|
||||
return proxy;
|
||||
} else if (context.name == botepref) {
|
||||
proxy = routerProxy();
|
||||
return proxy;
|
||||
} else if (context.name == torpref) {
|
||||
proxy = routerProxy();
|
||||
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 if (requestDetails.url.includes(':7695')) {
|
||||
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()
|
||||
};
|
||||
} else {
|
||||
proxy = null;
|
||||
}
|
||||
if (requestDetails.url.includes('rpc')) {
|
||||
console.log('(proxy for rpc url)', rpc);
|
||||
}
|
||||
/* var tab = tabGet(requestDetails.tabId);
|
||||
tab.then(handleTabRequest,) */
|
||||
return proxy;
|
||||
}
|
||||
};
|
||||
var contextGet = async function(tabInfo) {
|
||||
try {
|
||||
context = await browser.contextualIdentities.get(tabInfo.cookieStoreId);
|
||||
return context;
|
||||
} catch (error) {
|
||||
console.warn(error);
|
||||
return 'firefox-default';
|
||||
}
|
||||
};
|
||||
var tabGet = async function(tabId) {
|
||||
try {
|
||||
let tabInfo = await browser.tabs.get(tabId);
|
||||
return tabInfo;
|
||||
} catch (error) {
|
||||
console.log('(proxy)Tab error', error);
|
||||
}
|
||||
};
|
||||
if (proxyHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
return proxy;
|
||||
}
|
||||
if (requestDetails.originUrl == browser.runtime.getURL('security.html')) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
return proxy;
|
||||
}
|
||||
if (
|
||||
requestDetails.cookieStoreId == 'firefox-default' ||
|
||||
requestDetails.cookieStoreId == 'firefox-private'
|
||||
) {
|
||||
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(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
return proxy;
|
||||
} 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);
|
||||
return proxy;
|
||||
} else if (extensionHost(requestDetails)) {
|
||||
return;
|
||||
} else {
|
||||
var tab = tabGet(requestDetails.tabId);
|
||||
var context = tab.then(contextGet);
|
||||
var proxy = await context.then(handleProxyRequest);
|
||||
//console.log("(proxy)Returning I2P Proxy", proxy);
|
||||
return proxy;
|
||||
}
|
||||
/*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);
|
||||
}
|
||||
}
|
||||
|
||||
function SetupSettings() {
|
||||
console.log('Initialising Settings');
|
||||
function onSetupError() {
|
||||
console.log('Settings initialization error');
|
||||
}
|
||||
//
|
||||
function checkSchemeStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_scheme == undefined)
|
||||
storedSettings.proxy_scheme = 'http';
|
||||
else proxy_scheme = storedSettings.proxy_scheme;
|
||||
console.log('Initialising Settings');
|
||||
|
||||
console.log('Initialising Proxy Scheme', storedSettings.proxy_scheme);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingSchemeStoredSettings = browser.storage.local.get('proxy_scheme');
|
||||
gettingSchemeStoredSettings.then(checkSchemeStoredSettings, onSetupError);
|
||||
function onSetupError() {
|
||||
console.log('Settings initialization error');
|
||||
}
|
||||
//
|
||||
function checkSchemeStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_scheme == undefined) {
|
||||
storedSettings.proxy_scheme = 'http';
|
||||
} else {
|
||||
proxy_scheme = storedSettings.proxy_scheme;
|
||||
}
|
||||
|
||||
//
|
||||
function checkHostStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_host == undefined)
|
||||
storedSettings.proxy_host = '127.0.0.1';
|
||||
else proxy_host = storedSettings.proxy_host;
|
||||
console.log('Initialising Proxy Scheme', storedSettings.proxy_scheme);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingSchemeStoredSettings = browser.storage.local.get('proxy_scheme');
|
||||
gettingSchemeStoredSettings.then(checkSchemeStoredSettings, onSetupError);
|
||||
|
||||
console.log('Initialising Host', storedSettings.proxy_host);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingHostStoredSettings = browser.storage.local.get('proxy_host');
|
||||
gettingHostStoredSettings.then(checkHostStoredSettings, onSetupError);
|
||||
//
|
||||
function checkHostStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_host == undefined) {
|
||||
storedSettings.proxy_host = '127.0.0.1';
|
||||
} else {
|
||||
proxy_host = storedSettings.proxy_host;
|
||||
}
|
||||
|
||||
//
|
||||
function checkPortStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_port == undefined)
|
||||
storedSettings.proxy_port = '4444';
|
||||
else proxy_port = storedSettings.proxy_port;
|
||||
console.log('Initialising Host', storedSettings.proxy_host);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingHostStoredSettings = browser.storage.local.get('proxy_host');
|
||||
gettingHostStoredSettings.then(checkHostStoredSettings, onSetupError);
|
||||
|
||||
console.log('Initialising Port', storedSettings.proxy_port);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingPortStoredSettings = browser.storage.local.get('proxy_port');
|
||||
gettingPortStoredSettings.then(checkPortStoredSettings, onSetupError);
|
||||
//
|
||||
function checkPortStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_port == undefined) {
|
||||
storedSettings.proxy_port = '4444';
|
||||
} else {
|
||||
proxy_port = storedSettings.proxy_port;
|
||||
}
|
||||
|
||||
//
|
||||
function checkControlHostStoredSettings(storedSettings) {
|
||||
if (storedSettings.control_host == undefined)
|
||||
storedSettings.control_host = '127.0.0.1';
|
||||
else control_host = storedSettings.control_host;
|
||||
console.log('Initialising Port', storedSettings.proxy_port);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingPortStoredSettings = browser.storage.local.get('proxy_port');
|
||||
gettingPortStoredSettings.then(checkPortStoredSettings, onSetupError);
|
||||
|
||||
console.log('Initialising Control Host', storedSettings.control_host);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingControlHostStoredSettings = browser.storage.local.get(
|
||||
'control_host'
|
||||
);
|
||||
gettingControlHostStoredSettings.then(
|
||||
checkControlHostStoredSettings,
|
||||
onSetupError
|
||||
);
|
||||
//
|
||||
function checkControlHostStoredSettings(storedSettings) {
|
||||
if (storedSettings.control_host == undefined) {
|
||||
storedSettings.control_host = '127.0.0.1';
|
||||
} else {
|
||||
control_host = storedSettings.control_host;
|
||||
}
|
||||
|
||||
//
|
||||
function checkControlPortStoredSettings(storedSettings) {
|
||||
if (storedSettings.control_port == undefined)
|
||||
storedSettings.control_port = '7657';
|
||||
else control_port = storedSettings.control_port;
|
||||
|
||||
console.log('Initialising Control Port', storedSettings.control_port);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingControlPortStoredSettings = browser.storage.local.get(
|
||||
'control_port'
|
||||
);
|
||||
gettingControlPortStoredSettings.then(
|
||||
checkControlPortStoredSettings,
|
||||
onSetupError
|
||||
);
|
||||
|
||||
//
|
||||
function checkHistoryStoredSettings(storedSettings) {
|
||||
if (storedSettings.disable_history == undefined)
|
||||
storedSettings.disable_history = false;
|
||||
else disable_history = storedSettings.disable_history;
|
||||
|
||||
console.log(
|
||||
'Initialising Disabled History',
|
||||
storedSettings.disable_history
|
||||
console.log('Initialising Control Host', storedSettings.control_host);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingControlHostStoredSettings =
|
||||
browser.storage.local.get('control_host');
|
||||
gettingControlHostStoredSettings.then(
|
||||
checkControlHostStoredSettings,
|
||||
onSetupError
|
||||
);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingHistoryStoredSettings = browser.storage.local.get(
|
||||
'disable_history'
|
||||
);
|
||||
gettingHistoryStoredSettings.then(checkHistoryStoredSettings, onSetupError);
|
||||
|
||||
//
|
||||
function checkControlPortStoredSettings(storedSettings) {
|
||||
if (storedSettings.control_port == undefined) {
|
||||
storedSettings.control_port = '7657';
|
||||
} else {
|
||||
control_port = storedSettings.control_port;
|
||||
}
|
||||
|
||||
console.log('Initialising Control Port', storedSettings.control_port);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingControlPortStoredSettings =
|
||||
browser.storage.local.get('control_port');
|
||||
gettingControlPortStoredSettings.then(
|
||||
checkControlPortStoredSettings,
|
||||
onSetupError
|
||||
);
|
||||
|
||||
//
|
||||
function checkHistoryStoredSettings(storedSettings) {
|
||||
if (storedSettings.disable_history == undefined) {
|
||||
storedSettings.disable_history = false;
|
||||
} else {
|
||||
disable_history = storedSettings.disable_history;
|
||||
}
|
||||
|
||||
console.log(
|
||||
'Initialising Disabled History',
|
||||
storedSettings.disable_history
|
||||
);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingHistoryStoredSettings =
|
||||
browser.storage.local.get('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';
|
||||
}
|
||||
return proxy_host;
|
||||
if (proxy_host == undefined) {
|
||||
proxy_host = '127.0.0.1';
|
||||
}
|
||||
return proxy_host;
|
||||
}
|
||||
|
||||
function getPort() {
|
||||
if (proxy_port == undefined) {
|
||||
var scheme = getScheme();
|
||||
if (scheme == 'socks') proxy_port = '4446';
|
||||
else proxy_port = '4444';
|
||||
}
|
||||
return proxy_port;
|
||||
if (proxy_port == undefined) {
|
||||
var scheme = getScheme();
|
||||
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;
|
||||
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');
|
||||
browser.proxy.onRequest.addListener(handleContextProxyRequest, {
|
||||
urls: ['<all_urls>']
|
||||
});
|
||||
console.log('i2p settings created for WebExtension Proxy');
|
||||
console.log('Setting up Firefox WebExtension proxy');
|
||||
browser.proxy.onRequest.addListener(handleContextProxyRequest, {
|
||||
urls: ['<all_urls>']
|
||||
});
|
||||
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');
|
||||
chrome.storage.local.get(function() {
|
||||
SetupSettings();
|
||||
update();
|
||||
setupProxy();
|
||||
});
|
||||
console.log('updating settings from storage');
|
||||
chrome.storage.local.get(function() {
|
||||
SetupSettings();
|
||||
update();
|
||||
setupProxy();
|
||||
});
|
||||
}
|
||||
|
||||
updateFromStorage();
|
||||
@@ -412,12 +471,12 @@ SetupSettings();
|
||||
setupProxy();
|
||||
|
||||
var gettingListenerInfo = browser.runtime.getPlatformInfo();
|
||||
gettingListenerInfo.then((got) => {
|
||||
if (browser.windows != undefined) {
|
||||
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();
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
313
releases.atom
313
releases.atom
@@ -4,197 +4,180 @@
|
||||
<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>2021-05-26T22:32:58Z</updated>
|
||||
<updated>2022-02-12T01:29:40Z</updated>
|
||||
<entry>
|
||||
<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" />
|
||||
<id>tag:github.com,2008:Repository/169256012/0.131</id>
|
||||
<updated>2022-02-12T01:38:22Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.131"/>
|
||||
<title>0.131</title>
|
||||
<enclosure url="magnet:?xl=2485<title>0.131</title>dn=i2ppb%40eyedeekay.github.io.xpi.torrent<title>0.131</title>xt=urn:tree:tiger:ny7vvcovjmgra5ryppfq2gqxoqivfy7jukrdwfa<title>0.131</title>xt=urn:ed2k:dea3f4030ba0974d83f17ca9360b9979<title>0.131</title>xt=urn:aich:7jkwuvbwckodxbgn6qtthnwp2gskftku" type="application/x-bittorrent" />
|
||||
<content>No content.</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.125</id>
|
||||
<updated>2021-11-03T04:23:53Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.125"/>
|
||||
<title>0.125</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.125-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Bump and resubmit to mozilla.</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Wed, 3 Nov 2021 00:20:33 -0400</p>
|
||||
<p>i2psetproxy.js (0.123-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.123</id>
|
||||
<updated>2021-10-30T14:12:31Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.123"/>
|
||||
<title>0.123</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.105-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.123-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Add help page for configuring i2pcontrol</li>
|
||||
<li>Add help page for configuring i2psnark-rpc</li>
|
||||
<li>Update the icons</li>
|
||||
<li>Bump and resubmit to mozilla.</li>
|
||||
<li>I am not going to optionally keep cookies.</li>
|
||||
<li>That would be introducing a pointless security issue.</li>
|
||||
</ul>
|
||||
<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>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Wed, 30 Oct 2021 10:11:51 -0400</p>
|
||||
<p>i2psetproxy.js (0.121-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.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>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.119</id>
|
||||
<updated>2021-10-14T00:48:19Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.119"/>
|
||||
<title>0.119</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.103-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.119-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Fix for double-test issue on /home.html page in the extension</li>
|
||||
<li>Fix for broken options menu</li>
|
||||
<li>Fixes to ease releasing via AMO</li>
|
||||
</ul>
|
||||
<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>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Wed, 13 Oct 2021 20:37:30 -0400</p>
|
||||
<p>i2psetproxy.js (0.117-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.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.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.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.97-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Fix theme issue, add x-i2p-torrentlocation HEADER support</li>
|
||||
</ul>
|
||||
<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://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<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.89-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<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>i2psetproxy.js (0.87-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.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>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.115</id>
|
||||
<updated>2021-10-01T19:51:19Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.115"/>
|
||||
<title>0.115</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.87-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.115-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<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>
|
||||
<li>Improve functionality of X-I2P-Location and X-I2P-Torrentlocation</li>
|
||||
<li>Fix usage of browser.theme.reset()</li>
|
||||
<li>Add checks to disable features that are broken on Android</li>
|
||||
</ul>
|
||||
<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>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Fri, 1 Oct 2021 15:29:22 -0400</p>
|
||||
<p>i2psetproxy.js (0.113-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.113</id>
|
||||
<updated>2021-09-26T04:38:01Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.113"/>
|
||||
<title>0.113</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.113-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Fix checks on BRB, railroad containers</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sun, 26 Sep 2021 00:37:22 -0400</p>
|
||||
<p>i2psetproxy.js (0.111-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.111.1</id>
|
||||
<updated>2021-08-08T15:52:25Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.111.1"/>
|
||||
<title>0.111.1</title>
|
||||
<content>No content.</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.111</id>
|
||||
<updated>2021-07-08T03:28:16Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.111"/>
|
||||
<title>0.111</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.111-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>simplify background theme issue fix</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Wed, 07 Jul 2021 23:27:27 -0400</p>
|
||||
<p>i2psetproxy.js (0.109-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.109</id>
|
||||
<updated>2021-07-08T02:01:40Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.109"/>
|
||||
<title>0.109</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.109-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>connection interrupted mid release, retry failed validation. Bump and retry</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Wed, 07 Jul 2021 22:00:25 -0400</p>
|
||||
<p>connection interrupted mid release, retry failed validation. Bump and retry</p>
|
||||
<p>i2psetproxy.js (0.107-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.107</id>
|
||||
<updated>2021-07-08T01:44:27Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.107"/>
|
||||
<title>0.107</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.107-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Small code fixes</li>
|
||||
<li>Fix for interference with non-I2P containers</li>
|
||||
</ul>
|
||||
<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.105-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
|
@@ -126,20 +126,22 @@ function createContextMenu() {
|
||||
});
|
||||
}
|
||||
|
||||
if (browser.windows != undefined){
|
||||
if (browser.windows != undefined) {
|
||||
createContextMenu();
|
||||
|
||||
browser.contextMenus.onClicked.addListener((info, tab) => {
|
||||
if (info.menuItemId === "transmitter-add") {
|
||||
return addUrl(info.linkUrl);
|
||||
} else if (info.menuItemId.startsWith("transmitter-add-loc-")) {
|
||||
let index = parseInt(info.menuItemId.substr("transmitter-add-loc-".length));
|
||||
browser.storage.local.get("server").then(({ server }) => {
|
||||
let path = server.locations[index].path;
|
||||
addUrl(info.linkUrl, path);
|
||||
});
|
||||
}
|
||||
});
|
||||
browser.contextMenus.onClicked.addListener((info, tab) => {
|
||||
if (info.menuItemId === "transmitter-add") {
|
||||
return addUrl(info.linkUrl);
|
||||
} else if (info.menuItemId.startsWith("transmitter-add-loc-")) {
|
||||
let index = parseInt(
|
||||
info.menuItemId.substr("transmitter-add-loc-".length)
|
||||
);
|
||||
browser.storage.local.get("server").then(({ server }) => {
|
||||
let path = server.locations[index].path;
|
||||
addUrl(info.linkUrl, path);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
////// Badge
|
||||
|
||||
|
@@ -29,8 +29,8 @@
|
||||
|
||||
<div class="topnav">
|
||||
<a class="applicationName window-visit-homepage" href="#" id="window-visit-homepage" target="_blank">Home Page</a>
|
||||
<form action="http://yacy.idk.i2p/yacysearch.html?" method="get">
|
||||
<input id="search-query" name="query" placeholder="Search on yacy.idk.i2p(Opens a new tab)" type="search"> <input id="search-submit" text="Submit" type="submit">
|
||||
<form action="http://legwork.i2p/yacysearch.html?" method="get">
|
||||
<input id="search-query" name="query" placeholder="Search on legwork.i2p(Opens a new tab)" type="search"> <input id="search-submit" text="Submit" type="submit">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
<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>.
|
||||
<a class="torrent-opener" href="#" id="window-visit-torrent">For assistance, visit the torrent help page</a>.
|
||||
<br>
|
||||
<a class="config-opener" href="#">Open the settings</a> to continue.
|
||||
</div>
|
||||
@@ -121,7 +121,7 @@
|
||||
<div id="torrents-pane">
|
||||
<header>
|
||||
<h1>Torrent Controls</h1>
|
||||
<a class="webui-opener" href="#" target="_blank"><img alt="Open Web UI" src="images/i2plogo.png"></a> <!--<a class="config-opener" href="#">
|
||||
<img alt="Open WebUI" src="icons/i2plogo.png"> <a class="webui-opener" href="#" id="torrentui-opener">Open WebUI</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="images/info.svg"></a>-->
|
||||
|
Reference in New Issue
Block a user