1 Commits

Author SHA1 Message Date
idk
5cd23c5b3a pare this branch down to only the manifest.json and the Makefile 2021-09-30 18:10:34 -04:00
108 changed files with 120 additions and 16083 deletions

View File

View File

@@ -1,253 +0,0 @@
<html>
<head>
<title>
I2P in Private B...
</title>
<meta name="author" content="eyedeekay" />
<meta name="description" content="i2p-in-private-browsing-mode-firefox" />
<meta name="keywords" content="master" />
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="showhider.css" />
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="navbar">
<a href="#shownav">
Show navigation
</a>
<div id="shownav">
<div id="hidenav">
<ul>
<li>
<a href="..">
Up one level ^
</a>
</li>
<li>
<a href="index.html">
index
</a>
</li>
<li>
<a href="COLORS.html">
COLORS
</a>
</li>
<li>
<a href="GOALS.html">
GOALS
</a>
</li>
<li>
<a href="PLAN.html">
PLAN
</a>
</li>
<li>
<a href="home.html">
home.html
</a>
</li>
<li>
<a href="index.html">
index.html
</a>
</li>
<li>
<a href="location.html">
location.html
</a>
</li>
<li>
<a href="proxyerr.html">
proxyerr.html
</a>
</li>
<li>
<a href="sectorrent.html">
sectorrent.html
</a>
</li>
<li>
<a href="security.html">
security.html
</a>
</li>
<li>
<a href="toopie.html">
toopie.html
</a>
</li>
<li>
<a href="torrent.html">
torrent.html
</a>
</li>
<li>
<a href="window.html">
window.html
</a>
</li>
</ul>
<br>
<a href="#hidenav">
Hide Navigation
</a>
</div>
</div>
</div>
<a id="returnhome" href="/">
/
</a>
<h2>
WIP Style guidelines
</h2>
<h2>
Colors currently in use from CSS
</h2>
<pre><code> home.css:100: color: #41465f;
home.css:10: color: #3b6bbf;
home.css:113: color: #41465f;
home.css:125: color: #41465f;
home.css:139: color: #3b6bbf;
home.css:17: color: #81888f;
home.css:26: color: #495057;
home.css:35: color: #3b6bbf;
home.css:49: color: #495057;
home.css:58: background-color: #f8f8ff;
home.css:66: color: #495057;
search.css:20: background-color: #ddd
search.css:23: background-color: #2196f3;
search.css:24: color: #fff
home.css:135: background: 0 0!important;
home.css:161: background: #dee2e6;
home.css:175: background: #dee2e6;
home.css:188: background: #a48fe1;
home.css:200: background: #dee2e6;
home.css:214: background: #dee2e6;
home.css:228: background: #d9d9d6;
home.css:246: background: #ffc56d;
home.css:260: background: #f7e59a;
home.css:50: background-attachment: fixed;
home.css:51: background-size: 100% 100%;
home.css:57:.background {
home.css:58: background-color: #f8f8ff;
home.css:79: background: #f8f8ff;
home.css:91: background: #f8f8ff;
search.css:20: background-color: #ddd
search.css:23: background-color: #2196f3;
search.css:5: background: #dee2e6;
</code></pre>
<h2>
Colors currently in use from Javascript
</h2>
<pre><code> background.js:172: colors: {
background.js-173- frame: &quot;#FFC56D&quot;,
background.js-174- toolbar: &quot;#FFC56D&quot;
background.js-175- }
--
background.js:179: colors: {
background.js-180- frame: &quot;#FFC56D&quot;,
background.js-181- toolbar: &quot;#FFC56D&quot;
background.js-182- }
--
background.js:189: colors: {
background.js-190- frame: &quot;#A4C8E1&quot;,
background.js-191- toolbar: &quot;#A4C8E1&quot;
background.js-192- }
--
background.js:196: colors: {
background.js-197- frame: &quot;#A4C8E1&quot;,
background.js-198- toolbar: &quot;#A4C8E1&quot;
background.js-199- }
--
background.js:206: colors: {
background.js-207- frame: &quot;#D9D9D6&quot;,
background.js-208- toolbar: &quot;#D9D9D6&quot;
background.js-209- }
--
background.js:213: colors: {
background.js-214- frame: &quot;#D9D9D6&quot;,
background.js-215- toolbar: &quot;#D9D9D6&quot;
background.js-216- }
--
background.js:223: colors: {
background.js-224- frame: &quot;#F7E59A&quot;,
background.js-225- toolbar: &quot;#F7E59A&quot;
background.js-226- }
--
background.js:230: colors: {
background.js-231- frame: &quot;#F7E59A&quot;,
background.js-232- toolbar: &quot;#F7E59A&quot;
background.js-233- }
--
background.js:240: colors: {
background.js-241- frame: &quot;#A48FE1&quot;,
background.js-242- toolbar: &quot;#A48FE1&quot;
background.js-243- }
--
background.js:247: colors: {
background.js-248- frame: &quot;#A48FE1&quot;,
background.js-249- toolbar: &quot;#A48FE1&quot;
background.js-250- }
</code></pre>
<div id="sourcecode">
<span id="sourcehead">
<strong>
Get the source code:
</strong>
</span>
<ul>
<li>
<a href="https://github.com/eyedeekay/i2p-in-private-browsing-mode-firefox">
Source Repository: (https://github.com/eyedeekay/i2p-in-private-browsing-mode-firefox)
</a>
</li>
</ul>
</div>
<div>
<a href="#show">
Show license
</a>
<div id="show">
<div id="hide">
<pre><code>MIT License
Copyright (c) 2019 idk
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
</code></pre>
<a href="#hide">
Hide license
</a>
</div>
</div>
</div>
<div>
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
</div>
<div>
<a href="https://geti2p.net/">
<img src="i2plogo.png"></img>
I2P
</a>
</div>
</body>
</html>

View File

@@ -1,94 +0,0 @@
WIP Style guidelines
--------------------
Colors currently in use from CSS
--------------------------------
home.css:100: color: #41465f;
home.css:10: color: #3b6bbf;
home.css:113: color: #41465f;
home.css:125: color: #41465f;
home.css:139: color: #3b6bbf;
home.css:17: color: #81888f;
home.css:26: color: #495057;
home.css:35: color: #3b6bbf;
home.css:49: color: #495057;
home.css:58: background-color: #f8f8ff;
home.css:66: color: #495057;
search.css:20: background-color: #ddd
search.css:23: background-color: #2196f3;
search.css:24: color: #fff
home.css:135: background: 0 0!important;
home.css:161: background: #dee2e6;
home.css:175: background: #dee2e6;
home.css:188: background: #a48fe1;
home.css:200: background: #dee2e6;
home.css:214: background: #dee2e6;
home.css:228: background: #d9d9d6;
home.css:246: background: #ffc56d;
home.css:260: background: #f7e59a;
home.css:50: background-attachment: fixed;
home.css:51: background-size: 100% 100%;
home.css:57:.background {
home.css:58: background-color: #f8f8ff;
home.css:79: background: #f8f8ff;
home.css:91: background: #f8f8ff;
search.css:20: background-color: #ddd
search.css:23: background-color: #2196f3;
search.css:5: background: #dee2e6;
Colors currently in use from Javascript
---------------------------------------
background.js:172: colors: {
background.js-173- frame: "#FFC56D",
background.js-174- toolbar: "#FFC56D"
background.js-175- }
--
background.js:179: colors: {
background.js-180- frame: "#FFC56D",
background.js-181- toolbar: "#FFC56D"
background.js-182- }
--
background.js:189: colors: {
background.js-190- frame: "#A4C8E1",
background.js-191- toolbar: "#A4C8E1"
background.js-192- }
--
background.js:196: colors: {
background.js-197- frame: "#A4C8E1",
background.js-198- toolbar: "#A4C8E1"
background.js-199- }
--
background.js:206: colors: {
background.js-207- frame: "#D9D9D6",
background.js-208- toolbar: "#D9D9D6"
background.js-209- }
--
background.js:213: colors: {
background.js-214- frame: "#D9D9D6",
background.js-215- toolbar: "#D9D9D6"
background.js-216- }
--
background.js:223: colors: {
background.js-224- frame: "#F7E59A",
background.js-225- toolbar: "#F7E59A"
background.js-226- }
--
background.js:230: colors: {
background.js-231- frame: "#F7E59A",
background.js-232- toolbar: "#F7E59A"
background.js-233- }
--
background.js:240: colors: {
background.js-241- frame: "#A48FE1",
background.js-242- toolbar: "#A48FE1"
background.js-243- }
--
background.js:247: colors: {
background.js-248- frame: "#A48FE1",
background.js-249- toolbar: "#A48FE1"
background.js-250- }

View File

@@ -1,414 +0,0 @@
<html>
<head>
<title>
I2P in Private B...
</title>
<meta name="author" content="eyedeekay" />
<meta name="description" content="i2p-in-private-browsing-mode-firefox" />
<meta name="keywords" content="master" />
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="showhider.css" />
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="navbar">
<a href="#shownav">
Show navigation
</a>
<div id="shownav">
<div id="hidenav">
<ul>
<li>
<a href="..">
Up one level ^
</a>
</li>
<li>
<a href="index.html">
index
</a>
</li>
<li>
<a href="COLORS.html">
COLORS
</a>
</li>
<li>
<a href="GOALS.html">
GOALS
</a>
</li>
<li>
<a href="PLAN.html">
PLAN
</a>
</li>
<li>
<a href="home.html">
home.html
</a>
</li>
<li>
<a href="index.html">
index.html
</a>
</li>
<li>
<a href="location.html">
location.html
</a>
</li>
<li>
<a href="proxyerr.html">
proxyerr.html
</a>
</li>
<li>
<a href="sectorrent.html">
sectorrent.html
</a>
</li>
<li>
<a href="security.html">
security.html
</a>
</li>
<li>
<a href="toopie.html">
toopie.html
</a>
</li>
<li>
<a href="torrent.html">
torrent.html
</a>
</li>
<li>
<a href="window.html">
window.html
</a>
</li>
</ul>
<br>
<a href="#hidenav">
Hide Navigation
</a>
</div>
</div>
</div>
<a id="returnhome" href="/">
/
</a>
<h1>
These are the goals of the I2P Browser, and not really this plugin in-and-of-itself
</h1>
<p>
A
</p>
<h2>
User Interface:
</h2>
<ul>
<li>
Remove search engines
</li>
<li>
Replace bookmarks
</li>
<li>
Donate banner / UI
</li>
<li>
Patch Firefox to have relative (from the binary) profile directory
</li>
<li>
Start use the Firefox update process to update browser installations
</li>
<li>
Mark .i2p cookies as secure
</li>
<li>
Mark .i2p domains as secure connection
</li>
<li>
Add tests for .i2p secure marking
</li>
<li>
Improve the delay-the-user XUL dialogs to be more accurate in regards
of where the router is in its bootup progress
</li>
<li>
Disable the WebIDE
</li>
<li>
Disable GamePad API by default
</li>
<li>
Disable Web Speech API by default
</li>
<li>
Disable the Web Audio API by default
</li>
<li>
UI redesign bootstrapping and configuration screens (delay-the-user dialogs)
</li>
<li>
Default browser choose wining should de disabled like
browser.shell.checkDefaultBrowser, it can be default, but then
choosen by the user without any begging ahead
</li>
<li>
Extend the firefox preferences UI for I2P router configuration thought
of as &ldquo;must have&rdquo; or &ldquo;very nice to have&rdquo;
</li>
<li>
Shrink the BroadcastChannel API&rsquo;s boundaries of access or disable completely
</li>
<li>
Make a API white/grey/black -list, in super paranoia mode we should
probably disable almost all, while in most cases the user probably want
to be as close to a normal browser/web experinence that
they are used to from before
</li>
</ul>
<h2>
Leak Avoidance:
</h2>
<ul>
<li>
Stop web socket DNS leak
</li>
<li>
If doable, slim down the CA store from unnecessary CAs
</li>
<li>
Disable the microphone by default
</li>
<li>
Ensure WebRTC is disabled in compile time
</li>
<li>
Disable mDNS features
</li>
<li>
Ensure links like sftp:// and smb:// ,
as well as \samba-share is blocked/denied
</li>
<li>
Dont allow IndexedDB storage for third party domains (likability issue)
</li>
<li>
Patch the DNS service to prevent any browser or addon DNS resolution
</li>
<li>
Restrict what MIME types that are exposed to content scripts
</li>
</ul>
<h2>
General Security:
</h2>
<ul>
<li>
Backport any security patches that might appear from Mozilla
</li>
<li>
Dont allow XHR/Websockets requests towards 127.0.0.1/localhost
</li>
<li>
Always use the most sane form of preferences defaults in context
of privacy and security.
</li>
</ul>
<h2>
Unnecessary Connections:
</h2>
<ul>
<li>
Disable getpocket.com features and alike
</li>
<li>
Remove sync option from preferences
</li>
<li>
Clear state when the app exits, by default
</li>
<li>
Disable updater telemetry
</li>
<li>
Make firefox stop call home to mozilla for different reasons
</li>
<li>
Prevent non-Necko network connections
</li>
<li>
Figure out how to approach prerender, preconnect, and prefetch link tags
</li>
</ul>
<h2>
Disk Avoidance:
</h2>
<ul>
<li>
Dont allow SSL key logging
</li>
<li>
Only cache media in memory
</li>
<li>
Disable the password saving functionality to avoid such being written to disk
</li>
<li>
Disable the Auto form-fill to keep as much as possible not written to disk
</li>
</ul>
<h2>
Platforms:
</h2>
<ul>
<li>
Support for Android?
</li>
<li>
Support for iOS?
</li>
</ul>
<h2>
Anti-Fingerprinting:
</h2>
<ul>
<li>
Test for preferences which ensures a sane default and
something to tell when/if we break it
</li>
<li>
Disable support for system adding
</li>
<li>
Disable Firefox enterprise policies
</li>
<li>
Disable NTLM authentication
</li>
<li>
Disable SPNEGO authentication
</li>
<li>
Handle privacy issues regarding window.name
</li>
<li>
Test runner for I2P Browser test cases
</li>
<li>
Block loading of plugins
</li>
<li>
Disable OS spesific firefox features that can help fingerprint
the end user&rsquo;s operating system
</li>
<li>
Block html5 canvas by default
</li>
<li>
Block by default or disable WebGL completely?
</li>
<li>
Never start fullscreen, always start with fixed width/height to
avoid expose screen resolution
</li>
<li>
Report fake system uptime to content scripts
</li>
<li>
Spoof Accept-Language and Accept-Charset headers no matter browser language
</li>
<li>
Spoof timezone to always be UTC
</li>
<li>
Develop methods to reduce the accuracy of JavaScript
performance fingerprinting
</li>
<li>
Always report only one CPU core (dom.maxHardwareConcurrencys)
</li>
<li>
Avoid Keystroke fingerprinting by messing with the event resolution
</li>
<li>
Disable GeoIP-based search results
</li>
</ul>
<h2>
???
</h2>
<ul>
<li>
SVG drawing
</li>
<li>
MathML drawing
</li>
<li>
I2Pd flavor
</li>
</ul>
<div id="sourcecode">
<span id="sourcehead">
<strong>
Get the source code:
</strong>
</span>
<ul>
<li>
<a href="https://github.com/eyedeekay/i2p-in-private-browsing-mode-firefox">
Source Repository: (https://github.com/eyedeekay/i2p-in-private-browsing-mode-firefox)
</a>
</li>
</ul>
</div>
<div>
<a href="#show">
Show license
</a>
<div id="show">
<div id="hide">
<pre><code>MIT License
Copyright (c) 2019 idk
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
</code></pre>
<a href="#hide">
Hide license
</a>
</div>
</div>
</div>
<div>
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
</div>
<div>
<a href="https://geti2p.net/">
<img src="i2plogo.png"></img>
I2P
</a>
</div>
</body>
</html>

114
GOALS.md
View File

@@ -1,114 +0,0 @@
These are the goals of the I2P Browser, and not really this plugin in-and-of-itself
===================================================================================
A
User Interface:
---------------
* Remove search engines
* Replace bookmarks
* Donate banner / UI
* Patch Firefox to have relative (from the binary) profile directory
* Start use the Firefox update process to update browser installations
* Mark .i2p cookies as secure
* Mark .i2p domains as secure connection
* Add tests for .i2p secure marking
* Improve the delay-the-user XUL dialogs to be more accurate in regards
of where the router is in its bootup progress
* Disable the WebIDE
* Disable GamePad API by default
* Disable Web Speech API by default
* Disable the Web Audio API by default
* UI redesign bootstrapping and configuration screens (delay-the-user dialogs)
* Default browser choose wining should de disabled like
browser.shell.checkDefaultBrowser, it can be default, but then
choosen by the user without any begging ahead
* Extend the firefox preferences UI for I2P router configuration thought
of as "must have" or "very nice to have"
* Shrink the BroadcastChannel API's boundaries of access or disable completely
* Make a API white/grey/black -list, in super paranoia mode we should
probably disable almost all, while in most cases the user probably want
to be as close to a normal browser/web experinence that
they are used to from before
Leak Avoidance:
---------------
* Stop web socket DNS leak
* If doable, slim down the CA store from unnecessary CAs
* Disable the microphone by default
* Ensure WebRTC is disabled in compile time
* Disable mDNS features
* Ensure links like sftp:// and smb:// ,
as well as \\samba-share is blocked/denied
* Dont allow IndexedDB storage for third party domains (likability issue)
* Patch the DNS service to prevent any browser or addon DNS resolution
* Restrict what MIME types that are exposed to content scripts
General Security:
-----------------
* Backport any security patches that might appear from Mozilla
* Dont allow XHR/Websockets requests towards 127.0.0.1/localhost
* Always use the most sane form of preferences defaults in context
of privacy and security.
Unnecessary Connections:
------------------------
* Disable getpocket.com features and alike
* Remove sync option from preferences
* Clear state when the app exits, by default
* Disable updater telemetry
* Make firefox stop call home to mozilla for different reasons
* Prevent non-Necko network connections
* Figure out how to approach prerender, preconnect, and prefetch link tags
Disk Avoidance:
---------------
* Dont allow SSL key logging
* Only cache media in memory
* Disable the password saving functionality to avoid such being written to disk
* Disable the Auto form-fill to keep as much as possible not written to disk
Platforms:
----------
* Support for Android?
* Support for iOS?
Anti-Fingerprinting:
--------------------
* Test for preferences which ensures a sane default and
something to tell when/if we break it
* Disable support for system adding
* Disable Firefox enterprise policies
* Disable NTLM authentication
* Disable SPNEGO authentication
* Handle privacy issues regarding window.name
* Test runner for I2P Browser test cases
* Block loading of plugins
* Disable OS spesific firefox features that can help fingerprint
the end user's operating system
* Block html5 canvas by default
* Block by default or disable WebGL completely?
* Never start fullscreen, always start with fixed width/height to
avoid expose screen resolution
* Report fake system uptime to content scripts
* Spoof Accept-Language and Accept-Charset headers no matter browser language
* Spoof timezone to always be UTC
* Develop methods to reduce the accuracy of JavaScript
performance fingerprinting
* Always report only one CPU core (dom.maxHardwareConcurrencys)
* Avoid Keystroke fingerprinting by messing with the event resolution
* Disable GeoIP-based search results
???
---
* SVG drawing
* MathML drawing
* I2Pd flavor

21
LICENSE
View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2019 idk
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

162
Makefile
View File

@@ -37,10 +37,11 @@ clean: rc clean-artifacts
## EVEN RELEASES are AMO RELEASES
## ODD RELEASES are SELFHOSTED RELEASES
MOZ_VERSION=2.8.2
VERSION=2.8.3
MOZ_VERSION=0.114
VERSION=0.113
LAST_VERSION=$(shell grep '"version"' manifest.json | sed 's|"version"||g' | tr -d " :,'" | tr -d '"')
## INCREMENT THIS EVERY TIME YOU DO A RELEASE
LAST_VERSION=0.111.1
YELLOW=F7E59A
ORANGE=FFC56D
@@ -49,7 +50,6 @@ BLUE=A4C8E1
PURPLE=A48fE1
colors:
@echo "'$(LAST_VERSION)'"
@echo " yellow $(YELLOW) \n orange $(ORANGE) \n grey $(GREY) \n blue $(BLUE) \n purple $(PURPLE)"
amo-readme:
@@ -75,9 +75,7 @@ index:
@echo " <link rel=\"stylesheet\" type=\"text/css\" href=\"sidebar.css\" />" >> index.html
@echo "</head>" >> index.html
@echo "<body>" >> index.html
@echo "<div class=\"content\" id=\"browserpanel\">" >> index.html
sed "s|magnetsub|[Magnet Link]($(MAGNET))|g" README.md | sed 's|README.md|index.html|g' | markdown >> index.html
@echo "</div>" >> index.html
@echo "</body>" >> index.html
@echo "</html>" >> index.html
@@ -97,14 +95,23 @@ torrenthelp:
xpi: getxpi
version:
find . -name '*.json' -exec sed -i 's|$(LAST_VERSION)|$(VERSION)|g' {} \;
find . -name '*.json' -exec sed -i 's|$(MOZ_VERSION)|$(VERSION)|g' {} \;
sed -i 's|7647|7657|g' *.js* torrent/*.js*
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(VERSION)\",|g' manifest.json
# sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(VERSION)\",|g' manifest.json
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:
find . -name '*.json' -exec sed -i 's|$(LAST_VERSION)|$(MOZ_VERSION)|g' {} \;
find . -name '*.json' -exec sed -i 's|$(VERSION)|$(MOZ_VERSION)|g' {} \;
sed -i 's|7647|7657|g' *.js* torrent/*.js*
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(MOZ_VERSION)\",|g' manifest.json
# sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(MOZ_VERSION)\",|g' manifest.json
find . -name 'messages.json' -exec sed -i 's|$(LAST_VERSION)|$(MOZ_VERSION)|g' {} \;
find . -name 'messages.json' -exec sed -i 's|$(VERSION)|$(MOZ_VERSION)|g' {} \;
rhz-version:
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(VERSION)1\",|g' manifest.json
# sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(VERSION)1-rhizome\",|g' manifest.json
sed -i 's|7657|7647|g' *.js* torrent/*.js*
zip: version
zip --exclude="./i2ppb@eyedeekay.github.io.xpi" \
@@ -128,22 +135,19 @@ rc:
rtest: rc index torrenthelp
release: rc index torrenthelp
cat desc debian/changelog | grep -B 10 "$(LAST_VERSION)" | github-release release -p -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n $(VERSION) -d -; true
cat desc debian/changelog | grep -B 10 "$(LAST_VERSION)" | gothub release -p -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n $(VERSION) -d -; true
update-release:
cat desc debian/changelog | grep -B 10 "$(LAST_VERSION)" | github-release edit -p -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n $(VERSION) -d -; true
cat desc debian/changelog | grep -B 10 "$(LAST_VERSION)" | gothub edit -p -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n $(VERSION) -d -; true
delete-release:
github-release delete -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION); true
gothub delete -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION); true
recreate-release: delete-release release upload
upload: upload-xpi upload-deb
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
full-release: release submit upload-xpi torrent upload-torrent deb upload-deb upload-rss seed
WEB_EXT_API_KEY=AMO_KEY
WEB_EXT_API_SECRET=AMO_SECRET
@@ -164,7 +168,7 @@ moz-sign: version clean-artifacts
@echo "Using the 'sign' target to instantly sign an extension for self-distribution"
@echo "requires a JWT API Key and Secret from addons.mozilla.org to be made available"
@echo "to the Makefile under the variables WEB_EXT_API_KEY and WEB_EXT_API_SECRET."
$(HOME)/node_modules/.bin/web-ext sign --use-submission-api --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET) --timeout 900000 #--api-url-prefix http://localhost:3000/api/v4
$(HOME)/web-ext/bin/web-ext sign --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET) --timeout 900000 #--api-url-prefix http://localhost:3000/api/v4
make copyss
sleep 5
@@ -178,7 +182,7 @@ moz-submit: moz-version
@echo "to the Makefile under the variables WEB_EXT_API_KEY and WEB_EXT_API_SECRET."
mv manifest.json .manifest.json
grep -v update_url .manifest.json > manifest.json
$(HOME)/node_modules/.bin/web-ext sign --use-submission-api --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
$(HOME)/web-ext/bin/web-ext sign --channel listed --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET) --timeout 900000 --verbose #--api-url-prefix http://localhost:3000/api/v4
sleep 5
mv .manifest.json manifest.json
@@ -187,11 +191,11 @@ rhz-submit: rhz-version
#@echo "Using the 'sign' target to instantly sign an extension for self-distribution"
#@echo "requires a JWT API Key and Secret from addons.mozilla.org to be made available"
#@echo "to the Makefile under the variables WEB_EXT_API_KEY and WEB_EXT_API_SECRET."
#$PWD/node_modules/web-ext-submit/extender.sh --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET); true
#$HOME/node_modules/web-ext-submit/extender.sh --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET); true
#cp web-ext-artifacts/*.xpi ./i2ppb@eyedeekay.github.io.xpi
getxpi:
github-release download -t $(VERSION) -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -n i2ppb@eyedeekay.github.io.xpi
gothub download -t $(VERSION) -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -n i2ppb@eyedeekay.github.io.xpi
mv ./i2ppb@eyedeekay.github.io.xpi ../i2ppb-$(VERSION)@eyedeekay.github.io.xpi
cp ../i2ppb-$(VERSION)@eyedeekay.github.io.xpi ../i2ppb@eyedeekay.github.io.xpi
@@ -201,6 +205,36 @@ torrent: getxpi
-a http://zviyq72xcmjupynn5y2f5qa3u7bxyu34jnqmwt6czte2l7idxm7q.b32.i2p/announce \
-a http://s5ikrdyjwbcgxmqetxb3nyheizftms7euacuub2hic7defkh3xhq.b32.i2p/a \
-a http://uajd4nctepxpac4c4bdyrdw7qvja2a5u3x25otfhkptcjgd53ioq.b32.i2p/announce \
-a http://explodie.org:6969/announce \
-a http://tracker.opentrackr.org:1337/announce \
-a http://tracker.kamigami.org:2710/announce \
-a http://tracker.internetwarriors.net:1337/announce \
-a http://tracker.darli.net:6611/announce \
-a http://tracker.corpscorp.online:80/announce \
-a http://tracker.bz:80/announce \
-a http://tracker.bt4g.com:2095/announce \
-a http://retracker.sevstar.net:2710/announce \
-a http://h4.trakx.nibba.trade:80/announce \
-a http://www.proxmox.com:6969/announce \
-a http://www.loushao.net:8080/announce \
-a http://vps02.net.orel.ru:80/announce \
-a http://tracker4.itzmx.com:2710/announce \
-a http://tracker3.itzmx.com:6961/announce \
-a http://tracker2.itzmx.com:6961/announce \
-a http://tracker1.itzmx.com:8080/announce \
-a http://tracker01.loveapp.com:6789/announce \
-a http://tracker.zerobytes.xyz:1337/announce \
-a http://tracker.yoshi210.com:6969/announce \
-a http://tracker.torrentyorg.pl:80/announce \
-a http://tracker.nyap2p.com:8080/announce \
-a http://tracker.lelux.fi:80/announce \
-a http://tracker.gbitt.info:80/announce \
-a http://pow7.com:80/announce \
-a http://opentracker.i2p.rocks:6969/announce \
-a http://open.acgtracker.com:1096/announce \
-a http://open.acgnxtracker.com:80/announce \
-a http://mail2.zelenaya.net:80/announce \
-a http://acg.rip:6699/announce \
-n "i2ppb-$(VERSION)@eyedeekay.github.io.xpi" \
-o "i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" \
-w https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/download/$(VERSION)/i2ppb@eyedeekay.github.io.xpi \
@@ -209,23 +243,23 @@ torrent: getxpi
make index
upload-torrent:
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2ppb@eyedeekay.github.io.xpi.torrent" -f "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent"
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2ppb@eyedeekay.github.io.xpi.torrent" -f "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent"
upload-xpi:
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2ppb@eyedeekay.github.io.xpi" -f "../i2ppb@eyedeekay.github.io.xpi"
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2ppb@eyedeekay.github.io.xpi" -f "../i2ppb@eyedeekay.github.io.xpi"
upload-deb:
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION)-1_amd64.deb" -f "../i2psetproxy.js_$(VERSION)-1_amd64.deb"
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION).orig.tar.gz" -f "../i2psetproxy.js_$(VERSION).orig.tar.gz"
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION)-1.debian.tar.xz" -f "../i2psetproxy.js_$(VERSION)-1.debian.tar.xz"
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION)-1.dsc" -f "../i2psetproxy.js_$(VERSION)-1.dsc"
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION)-1_amd64.changes" -f "../i2psetproxy.js_$(VERSION)-1_amd64.changes"
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION)-1_amd64.buildinfo" -f "../i2psetproxy.js_$(VERSION)-1_amd64.buildinfo"
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION)-1_amd64.deb" -f "../i2psetproxy.js_$(VERSION)-1_amd64.deb"
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION).orig.tar.gz" -f "../i2psetproxy.js_$(VERSION).orig.tar.gz"
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION)-1.debian.tar.xz" -f "../i2psetproxy.js_$(VERSION)-1.debian.tar.xz"
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION)-1.dsc" -f "../i2psetproxy.js_$(VERSION)-1.dsc"
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION)-1_amd64.changes" -f "../i2psetproxy.js_$(VERSION)-1_amd64.changes"
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION)-1_amd64.buildinfo" -f "../i2psetproxy.js_$(VERSION)-1_amd64.buildinfo"
upload-docs:
github-release release -p -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "Documentation" -d "PDF's and text about the extension"; true
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "Landing Page Documentation.pdf" -f ../smartlander.pdf
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "Browser Design Documentation.pdf" -f ../browser.pdf
gothub release -p -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "Documentation" -d "PDF's and text about the extension"; true
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "Landing Page Documentation.pdf" -f ../smartlander.pdf
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "Browser Design Documentation.pdf" -f ../browser.pdf
fmt: fmt-css fmt-html fmt-js
@@ -240,22 +274,18 @@ fmt-html:
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes index.html > .index.html; mv .index.html index.html
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes window.html > .window.html; mv .window.html window.html
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes home.html > .home.html; mv .home.html home.html
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes toopie.html > .toopie.html; mv .toopie.html toopie.html
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes security.html > .security.html; mv .security.html security.html
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes options/options.html > options/.options.html; mv options/.options.html options/options.html
fmt-js:
fixjsstyle *.js
fixjsstyle options/*.js
#fixjsstyle torrent/*.js
#fixjsstyle i2pcontrol/*.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 {} \;
@@ -292,29 +322,59 @@ rss: torrent
sed -i "s|<title>$(VERSION)</title>|<title>$(VERSION)</title>\n <enclosure url=\"$(MAGNET)\" type=\"application/x-bittorrent\" />|g" releases.atom
upload-rss: rss
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "releases.atom" -f releases.atom
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "releases.atom" -f releases.atom
upload-updatemanifest:
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "updateManifest.json" -f updateManifest.json
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "updateManifest.json" -f updateManifest.json
webext:
mkdir -p profile
$(HOME)/node_modules/.bin/web-ext run --firefox /usr/bin/firefox --firefox-profile ./profile -u "about:devtools-toolbox?type=extension&id=i2ppb%40eyedeekay.github.io" http://idk.i2p http://localhost:7657 https://github.com/i2p/i2p.i2p https://i2pgit.org/i2p-hackers/i2p.i2p
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u "about:devtools-toolbox?type=extension&id=i2ppb%40eyedeekay.github.io"
snark-mirror:
http_proxy=http://127.0.0.1:4444 wget -c -O ../i2psnark-rpc.su3 http://stats.i2p/i2p/plugins/i2psnark-rpc.su3
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psnark-rpc.su3" -f ../i2psnark-rpc.su3
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psnark-rpc.su3" -f ../i2psnark-rpc.su3
http_proxy=http://127.0.0.1:4444 wget -c -O ../i2psnark-rpc-update.su3 http://stats.i2p/i2p/plugins/i2psnark-rpc-update.su3
github-release upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psnark-rpc-update.su3" -f ../i2psnark-rpc-update.su3
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psnark-rpc-update.su3" -f ../i2psnark-rpc-update.su3
seed:
cp -v "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" "$(HOME)/.i2p/i2psnark"
cp -v "../i2ppb-$(VERSION)@eyedeekay.github.io.xpi" "$(HOME)/.i2p/i2psnark"
android:
$(HOME)/node_modules/.bin/web-ext run \
--target firefox-android \
--android-device HT78N1A00453 \
--firefox-apk org.mozilla.fenix
wire:
cp -v "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" "$(HOME)/i2p/MuWireDownloads/"
cp -v "../i2ppb-$(VERSION)@eyedeekay.github.io.xpi" "$(HOME)/i2p/MuWireDownloads/"
run: webext
ndtest:
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u about:debugging \
-u http://127.0.0.1:7657/home \
-u http://127.0.0.1:7657/i2ptunnel \
-u http://127.0.0.1:7657/i2psnark \
-u http://127.0.0.1:7657/webmail \
-u http://127.0.0.1:7657/MuWire \
-u http://idk.i2p/video.html \
-u http://idk.i2p \
-u http://stats.i2p \
-u http://tvndxxkxcstbtqfxg7iigco6bj22ff2y6jxikmk7wqkyadkhrd4a.b32.i2p \
-u https://ramble.pw \
-u https://ramble.pw/f/i2p \
lht-test:
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u about:debugging \
-u http://localhost:7657/home \
-u http://localhost:7657/i2ptunnel \
-u http://localhost:7657/i2psnark \
-u http://localhost:7657/webmail \
-u http://localhost:7657/MuWire/ \
-u http://idk.i2p
android:
$(HOME)/web-ext/bin/web-ext run --target firefox-android \
--android-device NE1GAM7780819544 \
--browser-console
run:
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u about:debugging
chromium:
$(HOME)/web-ext/bin/web-ext run --target chromium

247
PLAN.html
View File

@@ -1,247 +0,0 @@
<html>
<head>
<title>
I2P in Private B...
</title>
<meta name="author" content="eyedeekay" />
<meta name="description" content="i2p-in-private-browsing-mode-firefox" />
<meta name="keywords" content="master" />
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="showhider.css" />
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="navbar">
<a href="#shownav">
Show navigation
</a>
<div id="shownav">
<div id="hidenav">
<ul>
<li>
<a href="..">
Up one level ^
</a>
</li>
<li>
<a href="index.html">
index
</a>
</li>
<li>
<a href="COLORS.html">
COLORS
</a>
</li>
<li>
<a href="GOALS.html">
GOALS
</a>
</li>
<li>
<a href="PLAN.html">
PLAN
</a>
</li>
<li>
<a href="home.html">
home.html
</a>
</li>
<li>
<a href="index.html">
index.html
</a>
</li>
<li>
<a href="location.html">
location.html
</a>
</li>
<li>
<a href="proxyerr.html">
proxyerr.html
</a>
</li>
<li>
<a href="sectorrent.html">
sectorrent.html
</a>
</li>
<li>
<a href="security.html">
security.html
</a>
</li>
<li>
<a href="toopie.html">
toopie.html
</a>
</li>
<li>
<a href="torrent.html">
torrent.html
</a>
</li>
<li>
<a href="window.html">
window.html
</a>
</li>
</ul>
<br>
<a href="#hidenav">
Hide Navigation
</a>
</div>
</div>
</div>
<a id="returnhome" href="/">
/
</a>
<p>
The I2P Browser has made strides at improving users anonymity when browsing
the anonymous web inside of I2P. However, it has in many ways simply re-hashed
the existing work of Tor on the Tor Browser. This is mostly a good thing, but it
is unfortunate because in a sense we have failed to add I2P specific features
that could improve the user experience and set us apart from the Tor Browser.
</p>
<p>
I think that moving forward, we should try to extend the functionality of I2P
Browser into more I2P-specific realms and make an effort to make those things
more accessible and highlight that they are in use. I don&rsquo;t really know how to
explain what I mean without describing what I want to do, so
</p>
<h2>
Let&rsquo;s avoid
<em>
adding
</em>
features to i2pbutton
</h2>
<p>
i2pbutton contains alot of code from Tor which even they don&rsquo;t really want to
maintain. It&rsquo;s dying the same long, slow death it&rsquo;s always been dying, since
back before there was a Tor Browser and torbutton was just an easy way to
configure Tor in your Firefox browser. I don&rsquo;t relish the thought of being one
the last two groups on the planet maintaining an XUL extension, so I think that
we should always be trying to do less with i2pbutton and more with a modern
extension. Other advantages of modern extensions are better debugging tools
and easier-to-use, more understandable API&rsquo;s for doing the following other
things.
</p>
<h2>
Contexts for Security and Placing Router Applications under their own Origin
</h2>
<p>
It is possible, however unlikely, for an attack on a local service or a router
plugin to leak information about what&rsquo;s going on on the router console because
they will share the same origin. We can resolve this issue, though, by placing
applications each into their own origin under a so-called &ldquo;Container Tab,&rdquo;
completely separating eepWeb traffic and Router Console administration. The
origin of the application will be the same as the part of the application URL
<em>
after
</em>
localhost:7657, so for instance &ldquo;
<a href="http://localhost:7657/torrents&quot;">
http://localhost:7657/torrents&rdquo;
</a>
would become just &ldquo;torrents&rdquo; in the URL bar and have that origin.
</p>
<h2>
Dynamic Themes
</h2>
<p>
Since I2P Browsing and Router Console Administration are going to be separated
to their own contextual identities, we can manipulate the appearance of the
Firefox browser to accomplish 2 things: We can indicate which context we are in
both by manipulating the UI text and color, and manipulate UI elements based on
what context we&rsquo;re in or even what URL(In the router console) we&rsquo;re on. We can
use this to make router console applications appear more tightly integrated with
the functionality of the browser. It&rsquo;s kind of obliquely like how many
applications are written with user-interfaces that are actually just
browsers(Including Mattermost), but with us using the whole browser,
acknowledging it&rsquo;s presence and utility but quite literally highlighting(in
color) our unique features. So for instance, when the user is using snark it
could change color to match snark and change text to say &ldquo;Torrent Client.&rdquo;
</p>
<h2>
Application Integration - Torrents
</h2>
<p>
I2P&rsquo;s strengths are in it&rsquo;s applications, but many users never even make it to
the applications, and even if they do, the I2P applications often lack the
familiar workflows that people are used to. For instance, when one downloads
a torrent on the non-anonymous internet, you simply click a link and the browser
&ldquo;Handles&rdquo; the link, automatically launching the torrent client, adding the
torrent, and sometimes prompting the user for more actions. This isn&rsquo;t possible
yet with i2psnark and an external browser, but in I2P browser we can write a
&ldquo;Protocol Handler&rdquo; which talks to snark-rpc, replicating the ease of just
clicking a torrent link to automatically add it to a torrent client. Of course
that does require us to bundle the snark-rpc plugin. Besides that, once we&rsquo;ve
added the torrent, we can keep talking to snark-rpc to keep track of the
download progress and display information about that in the already-available
Firefox downloads menu that users are already familiar with, so that they can
keep track of the files they are downloading after navigating away from the
snark interface, or perhaps even without needing to interact with snark at all.
</p>
<div id="sourcecode">
<span id="sourcehead">
<strong>
Get the source code:
</strong>
</span>
<ul>
<li>
<a href="https://github.com/eyedeekay/i2p-in-private-browsing-mode-firefox">
Source Repository: (https://github.com/eyedeekay/i2p-in-private-browsing-mode-firefox)
</a>
</li>
</ul>
</div>
<div>
<a href="#show">
Show license
</a>
<div id="show">
<div id="hide">
<pre><code>MIT License
Copyright (c) 2019 idk
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
</code></pre>
<a href="#hide">
Hide license
</a>
</div>
</div>
</div>
<div>
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
</div>
<div>
<a href="https://geti2p.net/">
<img src="i2plogo.png"></img>
I2P
</a>
</div>
</body>
</html>

70
PLAN.md
View File

@@ -1,70 +0,0 @@
The I2P Browser has made strides at improving users anonymity when browsing
the anonymous web inside of I2P. However, it has in many ways simply re-hashed
the existing work of Tor on the Tor Browser. This is mostly a good thing, but it
is unfortunate because in a sense we have failed to add I2P specific features
that could improve the user experience and set us apart from the Tor Browser.
I think that moving forward, we should try to extend the functionality of I2P
Browser into more I2P-specific realms and make an effort to make those things
more accessible and highlight that they are in use. I don't really know how to
explain what I mean without describing what I want to do, so
Let's avoid *adding* features to i2pbutton
------------------------------------------
i2pbutton contains alot of code from Tor which even they don't really want to
maintain. It's dying the same long, slow death it's always been dying, since
back before there was a Tor Browser and torbutton was just an easy way to
configure Tor in your Firefox browser. I don't relish the thought of being one
the last two groups on the planet maintaining an XUL extension, so I think that
we should always be trying to do less with i2pbutton and more with a modern
extension. Other advantages of modern extensions are better debugging tools
and easier-to-use, more understandable API's for doing the following other
things.
Contexts for Security and Placing Router Applications under their own Origin
----------------------------------------------------------------------------
It is possible, however unlikely, for an attack on a local service or a router
plugin to leak information about what's going on on the router console because
they will share the same origin. We can resolve this issue, though, by placing
applications each into their own origin under a so-called "Container Tab,"
completely separating eepWeb traffic and Router Console administration. The
origin of the application will be the same as the part of the application URL
*after* localhost:7657, so for instance "http://localhost:7657/torrents"
would become just "torrents" in the URL bar and have that origin.
Dynamic Themes
--------------
Since I2P Browsing and Router Console Administration are going to be separated
to their own contextual identities, we can manipulate the appearance of the
Firefox browser to accomplish 2 things: We can indicate which context we are in
both by manipulating the UI text and color, and manipulate UI elements based on
what context we're in or even what URL(In the router console) we're on. We can
use this to make router console applications appear more tightly integrated with
the functionality of the browser. It's kind of obliquely like how many
applications are written with user-interfaces that are actually just
browsers(Including Mattermost), but with us using the whole browser,
acknowledging it's presence and utility but quite literally highlighting(in
color) our unique features. So for instance, when the user is using snark it
could change color to match snark and change text to say "Torrent Client."
Application Integration - Torrents
----------------------------------
I2P's strengths are in it's applications, but many users never even make it to
the applications, and even if they do, the I2P applications often lack the
familiar workflows that people are used to. For instance, when one downloads
a torrent on the non-anonymous internet, you simply click a link and the browser
"Handles" the link, automatically launching the torrent client, adding the
torrent, and sometimes prompting the user for more actions. This isn't possible
yet with i2psnark and an external browser, but in I2P browser we can write a
"Protocol Handler" which talks to snark-rpc, replicating the ease of just
clicking a torrent link to automatically add it to a torrent client. Of course
that does require us to bundle the snark-rpc plugin. Besides that, once we've
added the torrent, we can keep talking to snark-rpc to keep track of the
download progress and display information about that in the already-available
Firefox downloads menu that users are already familiar with, so that they can
keep track of the files they are downloading after navigating away from the
snark interface, or perhaps even without needing to interact with snark at all.

229
README.md
View File

@@ -1,229 +0,0 @@
I2P in Private Browsing Mode(Firefox-Only)
==========================================
- **This extension requires a running I2P Router on the Host System**
- [**This extension comes pre-installed in the Easy-Install Beta for Windows**](https://geti2p.net/en/download/easyinstall)
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.
Privacy Policy
--------------
This browser extension does not collect any personal information. It requires
access to local storage and browsing data permissions in order to delete them
when directed to by the user. This browser extension does not transmit any
information to any third party, nor will it, ever.
This browser extension cannot influence telemetry carried out by browser vendors
to determine performance in their distribution channels, nor can it mitigate any
other browser vendor telemetry.
This browser extension is entirely Free, Open-Source software.
Installation(Cross-Platform):
-----------------------------
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:
--------------------
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:
make deb
and then you can install it with:
sudo apt install ../i2psetproxy.js_*.deb
Bittorrent Download:
--------------------
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).
* magnetsub
* [Get the .torrent file](./i2ppb@eyedeekay.github.io.xpi.torrent)
Usage:
------
* 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.
* 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:
* ![Landing page](lander.png)
* Also, there's a menu for accessing I2P functionality while you're browsing.
It lets you control a few settings in a granular way.
* ![Menu](menu.png)
* You can re-enable WebRTC but force it to always use the proxy that is
enforced by the tab.
* 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.
* That's all there is to it! Your browser is configured to safely use and
administer I2P.
* 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:
[Torrent guide](torrent/README.md)
### Features
* [done] **Provide** 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.
* ![Visiting i2p-projekt.i2p](i2psetproxy.js.png)
* [done] **Indicate** the I2P browser is in use visually. Find an
acceptable way to indicate it on Android.
* ![Visiting webmail](susimail.png)
* [done] **Set** the http proxy to use the local I2P proxy automatically.
Provide specific configuration for other types of I2P proxies(SOCKS,
isolating HTTP)
* [done] **Disable** risky webRTC features/offer the option to re-enable
them with the proxy enforced.
* [done] **Change** the color of the browser window to indicate that I2P is in
use
* ![Visiting i2ptunnel](i2ptunnel.png)
* [ready] **Provide** help in a variety of languages.
* [done] **Monitor** 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.
* ![Visiting toopie.html](toopie.png)
* [Done] **Handle** 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.
* ![Visiting routerconsole](routerconsole.png)
* [Done] **Handle Torrents** 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.
* ![Visiting i2psnark](i2psnark.png)
* ![Monitoring torrents](transmissionrpc.png)
* [Done] **Enhance** the I2P browsing experience by allowing site developers
distribute some or all of their resources as torrents, allowing the torrents to
be treated effectively as a CDN.
* ![Distribute your site as a torrent.](x-i2p-torrentlocation.png)
* [Done] **Indicate** the level of authenticity provided by TLS. TLS is
optional on I2P for now, but some sites offer it anyway. TLS support is
experimental and in the works.
* ![Use HTTPS with your I2P Site.](i2p-https.png)
* [Done] **Provide** alternate, in-I2P destinations for web sites that want to
mirror their content within I2P.
* [barely started] **Isolate** traffic by contextual identity to it's own HTTP
Proxy tunnel, each reflecting it's own pseudonymous identity within I2P. The
contextual identities. For now, the contextual identities used to manage
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
- 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.
- 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.
- I2P Blogging: Use this for posting content to the web interface of your
blog or to other similar websites that you create content on.
* ![Visiting clearweb](clearweb.png)
### Video
* ![Video of the plugin in action](i2psetproxy.js.gif)
Documents
------------
* **[Browser Outline](https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/download/docs/Browser.Design.Documentation.pdf)**: This document is an outline of each of
the browser extension's feature panels in presentation form.
* **[Smart Lander Design](https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/download/docs/Landing.Page.Documentation.pdf)**: 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.
* **[Other extensions](https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/wiki/Other-Extensions)**: and how they work with this one.
Super Extra Important Background Info:
--------------------------------------
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.
### Links about Project Uplift
* [Tor Uplift](https://wiki.mozilla.org/Security/Tor_Uplift) 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.
* [First Party Isolation](https://wiki.mozilla.org/Security/FirstPartyIsolation)
is a feature in Firefox and other browsers which keeps information from
leaking across first-party domains.
* [Fingerprinting](https://wiki.mozilla.org/Security/Fingerprinting) 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.
* [Fennec](https://wiki.mozilla.org/Security/Fennec%2BTor_Project) is Firefox
for Android and this link has some analysis of the privacy consequences of the
Android platform.
* [Tracking](https://wiki.mozilla.org/Security/Tor_Uplift/Tracking) in Firefox
is surveyed here.
Project uplift seems to have largely been accomplished?
### Links about Project Fusion
* [Project Fusion](https://wiki.mozilla.org/Security/Fusion) or Firefox using
Onions is a joint Mozilla/Tor effort to create an enhanced Private Browsing
mode for Firefox which uses Tor.
* [Notes](https://trac.torproject.org/projects/tor/wiki/org/meetings/2018Rome/Notes/FusionProject)
from a meeting about Fusion.
* [Tor at the Heart: Firefox](https://blog.torproject.org/tor-heart-firefox) is
a blog about Tor and the relationship they have to Firefox re: TBB, Fusion.
The **Other** Version
---------------------
New versions of this extension create an I2P in Private Browsing mode instead,
using container tabs.
Since this is a drastic change to the behavior of the old plugin, and since there
is no UI a new entry
for the new plugin has been made at a new location on addons.mozilla.org.
* This is the new version: [[link]](https://addons.mozilla.org/en-US/firefox/addon/i2p-in-private-browsing/)
* This is the old version: [[link]](https://addons.mozilla.org/en-US/firefox/addon/I2P-Proxy/)
Android usage:
--------------
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/

View File

@@ -1,36 +0,0 @@
Roadmap:
========
2.5.8:
------
Refactor the codebase to make more use of reusable code. De-spaghettify and DRY things out.
2.6.0:
------
Refactor the codebase to make more use of reusable code. De-spaghettify and DRY things out.
2.7.0:
------
# Finished Feature Breakout:
Create 2 new extensions which include functionality which has remained entirely the same for as long as it has existed, and which is suitable for use in it's own extensions. This is to decrease the maintenance burden of this extension, which has grown significant functionality outside it's original scope, and improve UI by providing clearer and less complex user-interfaces which are limited by the constraints of the WebExtensions system.
- Remove i2psnark-rpc functionality and place it into it's own, separate extension.
1. Remove options for configuring i2psnark-rpc from options menu and place them into a separate browser extension. This step initializes a new browser extension.
2. Remove Download control menu from Browser Action panel, and place it into the new browser extension.
3. Move torrent Navbar Buttons from old extension to new extension.
4. Remove torrent-on-page discovery functionality from background scripts, and place it into the new browser extension.
5. Set up reliable, straightforward release process.
- Remove i2pcontrol-rpc functionality and place it into it's own, separate extension.
1. Remove options for configuring i2pcontrol-rpc from options menu and place them into a separate browser extension. This step initializes a new browser extension.
2. Set up `toopie.html` as a browser extension, drawing upon the options which are now controlled by the browser extension options page.
3. Set up reliable, straightforward release process.
- Create an "Extension Template" for plugins which require outgoing traffic to be proxied over I2P.
- Create options for configuring the proxy
- Create reference extension-bound proxification function and set it up for the onRequest event.
- Create example WebExtension I2P application

View File

@@ -1,738 +0,0 @@
{
"CertLabel": {
"description": "شهادة المعلومات:",
"message": "شهادة المعلومات:"
},
"SignedLabel": {
"description": "توقيع:",
"message": "توقيع:"
},
"TorrentTypeLabel": {
"description": "Torrent Links:",
"message": "Torrent Links:"
},
"TypeLabel": {
"description": "Torrent Links:",
"message": "Torrent Links:"
},
"aboutconsole": {
"description": "للولوج إلى الصفحة الرئيسية لجهاز التحكم، يذهب هنا:",
"message": "للولوج إلى الصفحة الرئيسية لجهاز التحكم، يذهب هنا:"
},
"abouthome": {
"description": "وصف لصفحة الزر.",
"message": "وللمزيد من المعلومات عن هذا التمديد، يرجى زيارة هذه الصفحة."
},
"addresstype": {
"description": "العنوان:",
"message": "العنوان:"
},
"applicationExplain": {
"description": "Description for application section.",
"message": "The I2P router console and applications open in their own tab, providing them with the same security benefits as browsing with this extension. This adds more protection by isolating each application and preventing other tabs (ie social media, etc) from fingerprinting or scripts. جميع المشابك تستخدم ألوان تحديد لتتبع تدفق العمل الخاص بك I2P."
},
"applicationHeader": {
"description": "رئيس قسم الطلبات.",
"message": "التطبيقات"
},
"beta": {
"description": "هذا منتج تجريبي.",
"message": "هذا منتج تجريبي."
},
"blogPreface": {
"description": "وجه لقب المصفح",
"message": "Blog"
},
"blogPrefacePrivate": {
"description": "وجه لقب المصفح",
"message": "Blog (Private)"
},
"bookmarksButton": {
"description": "Re-Create Bookmarks",
"message": "Re-Create Bookmarks"
},
"botePreface": {
"description": "وجه لقب المصفح",
"message": "I2P-Bote Mail"
},
"botePrefacePrivate": {
"description": "وجه لقب المصفح",
"message": "I2P-Bote Mail (Private)"
},
"browser-action": {
"description": "Browse",
"message": "Browse"
},
"btRpcHostText": {
"description": "التجمع الكونغولي من أجل الديمقراطية المضيف:",
"message": "التجمع الكونغولي من أجل الديمقراطية المضيف:"
},
"btRpcPathText": {
"description": "التجمع الكونغولي من أجل الديمقراطية الطريق:",
"message": "التجمع الكونغولي من أجل الديمقراطية الطريق:"
},
"btRpcPortText": {
"description": "التجمع الكونغولي من أجل الديمقراطية بورت:",
"message": "التجمع الكونغولي من أجل الديمقراطية بورت:"
},
"certAbsent": {
"description": "مضمون المعلومات المتعلقة بالشهادة إذا لم يكن هناك",
"message": "هذا الموقع لا يستخدم جهاز تحديد المواقع ما زالَ يُتأكّدُ مِنْ المُبْكَرَةِ مِن قِبل I2P."
},
"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"
},
"description": {
"description": "أنت الآن قادرة على استخدام I2P في هذا بروزر.",
"message": "أنت الآن قادرة على استخدام I2P في هذا بروزر."
},
"description2": {
"description": "إذا كنت ترى هذه الصفحة، هو لأن خطأ محترف حدث. تم تقديم بعض المعلومات لمساعدتك في تشخيص المسألة.",
"message": "إذا كنت ترى هذه الصفحة، هو لأن خطأ محترف حدث. تم تقديم بعض المعلومات لمساعدتك في تشخيص المسألة."
},
"disableHistory": {
"description": "بطاقة تدقيق التاريخ.",
"message": "تاريخ معزول في تابس I2P؟?"
},
"enableWebRTC": {
"description": "(ويرتك).",
"message": "هل تستطيع أن تُخبر (ويك) بالوكالة؟?"
},
"extensionDescription": {
"description": "وصف التمديد.",
"message": "شبكة \"آي 2 بي\" سهلت."
},
"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"
},
"fliplinks": {
"description": "تمديد ونفقات الموارد",
"message": "تمديد ونفقات الموارد"
},
"forumMessage": {
"description": "رسالة المساعدة",
"message": "زيارة منتدى شركاء التنفيذ لتعلم المزيد أو طلب المساعدة"
},
"headline": {
"description": "قاذفة الإنترنت غير المرئية",
"message": "قاذفة الإنترنت غير المرئية"
},
"help": {
"description": "وصف لصفحة الزر.",
"message": "وللمزيد من المعلومات عن هذا التمديد، يرجى زيارة هذه الصفحة."
},
"helpMessage": {
"description": "رسالة المساعدة",
"message": "الحصول على مساعدة إضافية"
},
"histDesc": {
"description": "وصف الإجراءات التاريخية",
"message": "التاريخ يُبرّر تلقائياً عندما تُغلق رسومات I2P الخاصة بك. إذا كنت تريد تصفية التاريخ كما تذهب، تحقق من هذا الصندوق."
},
"homepage": {
"description": "البحث عن المزيد من المعلومات",
"message": "هناك المزيد من المعلومات المتاحة هنا"
},
"hostText": {
"description": "المضيف لشركة HTTP أو شركة SOCKS5",
"message": "المضيف:"
},
"i2ppage": {
"description": "وهناك المزيد من المعلومات المتاحة هنا.",
"message": "وهناك المزيد من المعلومات المتاحة هنا."
},
"i2ptunnel": {
"description": "Description for i2ptunnel",
"message": "نشاهد رسائل عن وضعية المحترفين و نصادر الخدمات والأنفاق."
},
"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 القفزة المضيفة"
},
"label-router-activepeers": {
"description": "ناشطين",
"message": "ناشطين"
},
"label-router-bandwidth": {
"description": "Bandwidth",
"message": "Bandwidth"
},
"label-router-bw-inbound-15s": {
"description": "في حدود 15",
"message": "في حدود 15"
},
"label-router-bw-inbound-1s": {
"description": "مقياس الجسم 1:",
"message": "مقياس الجسم 1:"
},
"label-router-bw-outbound-15s": {
"description": "مقاس 15 بوصة:",
"message": "مقاس 15 بوصة:"
},
"label-router-bw-outbound-1s": {
"description": "الرصيف الأول",
"message": "الرصيف الأول"
},
"label-router-net-tunnels-participating": {
"description": "سلالات العبور:",
"message": "سلالات العبور:"
},
"label-router-netdb-fastpeers": {
"description": "بسرعة",
"message": "بسرعة"
},
"label-router-netdb-highcapacitypeers": {
"description": "القدرات العالية بيرز:",
"message": "القدرات العالية بيرز:"
},
"label-router-netdb-isreseeding": {
"description": "Reseed status:",
"message": "Reseed status:"
},
"label-router-netdb-knownpeers": {
"description": "المعلمة بيرز:",
"message": "المعلمة بيرز:"
},
"label-router-peers": {
"description": "Peers",
"message": "Peers"
},
"label-router-status": {
"description": "Status Router Status:",
"message": "Status Router Status:"
},
"label-router-uptime": {
"description": "وقت التخرج",
"message": "وقت التخرج"
},
"label-router-version": {
"description": "الراقصة:",
"message": "الراقصة:"
},
"links": {
"description": "تمديد ونفقات الموارد",
"message": "تمديد ونفقات الموارد"
},
"linksExplain": {
"description": "إذا كنت تريد الحصول على المزيد من المعلومات عن I2P، يمكنك زيارة هذه الروابط.",
"message": "إذا كنت تريد الحصول على المزيد من المعلومات عن I2P، يمكنك زيارة هذه الروابط."
},
"mailPreface": {
"description": "وجه لقب المصفح",
"message": "البريد الشبكي"
},
"mailPrefacePrivate": {
"description": "وجه لقب المصفح",
"message": "البريد الإلكتروني (Private)"
},
"muwirePreface": {
"description": "وجه لقب المصفح",
"message": "MuWire"
},
"muwirePrefacePrivate": {
"description": "وجه لقب المصفح",
"message": "مووير (بريفيت)"
},
"newsMessage": {
"description": "رسالة المساعدة",
"message": "زيارة I2P اعتذر لتعلم آخر شيء عن (اي2ب)."
},
"onboardingButtonFive": {
"description": "تحسين الخبرة",
"message": "تحسين الخبرة"
},
"onboardingButtonFour": {
"description": "Sharing Files",
"message": "تبادل الملفات"
},
"onboardingButtonOne": {
"description": "I2P Network Browsing and Non-I2P Network Browsing",
"message": "I2P Network Browsing and Non-I2P Network Browsing"
},
"onboardingButtonThree": {
"description": "البريد الإلكتروني المخفي",
"message": "البريد الإلكتروني المخفي"
},
"onboardingButtonTwo": {
"description": "شبكة الحماية",
"message": "شبكة الحماية"
},
"onboardingButtonZero": {
"description": "احمي خصوصيتك",
"message": "احمي خصوصيتك"
},
"onboardingContentFive": {
"description": "هذا التمديد يمكن أن يقترن بتمديدات أخرى التي تُحسّن أحياناً وظيفتها شركة أوبلوك أوريغين، وشركة محلية، وشركة jShelter مفيدة للتعجيل بتحميل الصفحات، وحجب الإعلانات، والحد من قوة جافرين. وبالنسبة للمستعملين الذين يرغبون في حجب كل الجافوري، يوصى بـ \" NoScript \" .",
"message": "هذا التمديد يمكن أن يقترن بتمديدات أخرى التي تُحسّن أحياناً وظيفتها شركة أوبلوك أوريغين، وشركة محلية، وشركة jShelter مفيدة للتعجيل بتحميل الصفحات، وحجب الإعلانات، والحد من قوة جافرين. وبالنسبة للمستعملين الذين يرغبون في حجب كل الجافوري، يوصى بـ \" NoScript \" ."
},
"onboardingContentFour": {
"description": "I2P is capable of using peer-to-peer applications like Bit Torrent, protecting your identity when you share files. زبوننا الصغير المجهول متوفر في المسبح.",
"message": "I2P is capable of using peer-to-peer applications like Bit Torrent, protecting your identity when you share files. زبوننا الصغير المجهول متوفر في المسبح."
},
"onboardingContentOne": {
"description": "هذا التوسيع يعمل تلقائياً عندما تنظف مواقع I2P إذا كنت ترغب في استخدام I2P كوكيل للمواقع غير I2P، استخدام زر I2P In Private Browsing in the toolbar خبرتك بينما تنظف الانترنت قد تكون مختلفة قليلا قد تكون الأمور أبطأ قليلاً، ورهناً بمستوى أمنك، قد لا تعمل بعض العناصر أو تحملها. قد يُطلب منك أيضاً أن تثبت أنك إنسان وليس إنسان آلي.",
"message": "هذا التوسيع يعمل تلقائياً عندما تنظف مواقع I2P إذا كنت ترغب في استخدام I2P كوكيل للمواقع غير I2P، استخدام زر I2P In Private Browsing in the toolbar خبرتك بينما تنظف الانترنت قد تكون مختلفة قليلا قد تكون الأمور أبطأ قليلاً، ورهناً بمستوى أمنك، قد لا تعمل بعض العناصر أو تحملها. قد يُطلب منك أيضاً أن تثبت أنك إنسان وليس إنسان آلي."
},
"onboardingContentThree": {
"description": "وهناك أيضاً خدمة بريد إلكتروني مجهولة الهوية متاحة داخل I2P، ويمكن الحصول عليها من منظفنا عن طريق القائمة مباشرة إلى اليمين.",
"message": "وهناك أيضاً خدمة بريد إلكتروني مجهولة الهوية متاحة داخل I2P، ويمكن الحصول عليها من منظفنا عن طريق القائمة مباشرة إلى اليمين."
},
"onboardingContentTwo": {
"description": "I2P is normally administered via a WebUI (The \"Router Console \"), which the user sometimes views in the same browser they use to visit remote sites. ومن الضروري منع المواقع من الحصول على المعلومات من هذا الموقع وغيره من الخدمات التي يديرها محليا. ولا تزال مواقع شبكة التطهير في حاوية الدفء - الديوكس، ولكن بمجرد أن تطلب حاوية دفوكس - قاذف الديوكس (A)-onion أو *.i2p موقعا، ستتم حاويته فورا. أداة إدارة هوية (تور بروزر) تتحكم في تابوتات الشبكه النظيفه و هم يقتربون من استخدام المعالجه الخارجيه لـ (آي 2 بي) أو (بلوجين).",
"message": "I2P is normally administered via a WebUI (The Router Console) which the user sometimes views in the same browser they use to visit remote sites. ومن الضروري منع المواقع من الحصول على المعلومات من هذا الموقع وغيره من الخدمات التي يديرها محليا. ولا تزال مواقع شبكة التطهير في حاوية الدفء - الديوكس، ولكن بمجرد أن تطلب حاوية دفوكس - قاذف الديوكس (A)-onion أو *.i2p موقعا، ستتم حاويته فورا. أداة إدارة هوية (تور بروزر) تتحكم في تابوتات الشبكه النظيفه و هم يقتربون من استخدام المعالجه الخارجيه لـ (آي 2 بي) أو (بلوجين)."
},
"onboardingContentZero": {
"description": "عندما تستخدم (إي تو بي) في (مود) الخاص، فأنت محمي من التتبع والمراقبة. الـ (إي تو بي بروزر) يعزل الكعك ويحذف تاريخك بعد دورتك هذه التعديلات تضمن أن خصوصيتك وأمنك محمية كبروزك.",
"message": "عندما تستخدم (إي تو بي) في (مود) الخاص، فأنت محمي من التتبع والمراقبة. الـ (إي تو بي بروزر) يعزل الكعك ويحذف تاريخك بعد دورتك هذه التعديلات تضمن أن خصوصيتك وأمنك محمية كبروزك."
},
"onboardingFive": {
"description": "الخبرة",
"message": "الخبرة"
},
"onboardingFour": {
"description": "تحشد الشبكة",
"message": "تحشد الشبكة"
},
"onboardingOne": {
"description": "إئتمنْك الخبرة",
"message": "إئتمنْك الخبرة"
},
"onboardingThree": {
"description": "البريد الإلكتروني المخفي",
"message": "البريد الإلكتروني المخفي"
},
"onboardingTitle": {
"description": "حول I2P In Private Browsing",
"message": "حول I2P In Private Browsing"
},
"onboardingTwo": {
"description": "Share Files",
"message": "Share Files"
},
"onboardingZero": {
"description": "احمي خصوصيتك",
"message": "احمي خصوصيتك"
},
"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"
},
"proxy-check": {
"description": "الوكيل جاهز.",
"message": "الوكيل جاهز."
},
"proxyFailedStatus": {
"description": "فشل الوكيل.",
"message": "الوكيل لَيسَ جاهزَ"
},
"proxyHelpText": {
"description": "المساعدة على تشكيل خيارات زر نفق ريست",
"message": "إعترف بوكيلك هنا."
},
"proxySuccessStatus": {
"description": "فشل الوكيل.",
"message": "الوكيل جاهز"
},
"readyness": {
"description": "الوكيل جاهز.",
"message": "الوكيل جاهز."
},
"releases": {
"description": "Description for new release page",
"message": "تحقق من الإطلاقات الجديدة هنا"
},
"resetMessage": {
"description": "رسالة لزر نفق ريست",
"message": "Reset Tunnel"
},
"returnhome": {
"description": "/",
"message": "/"
},
"router-net-bw-inbound-15s": {
"description": "يستعاض عن عبارة Router Bandwidth Outbound 15s",
"message": "يستعاض عن عبارة Router Bandwidth Outbound 15s"
},
"router-net-bw-inbound-1s": {
"description": "يستعاض عن عبارة Router Bandwidth Inbound 1s",
"message": "يستعاض عن عبارة Router Bandwidth Inbound 1s"
},
"router-net-bw-outbound-15s": {
"description": "يستعاض عن عبارة Router Bandwidth Outbound 15s",
"message": "يستعاض عن عبارة Router Bandwidth Outbound 15s"
},
"router-net-bw-outbound-1s": {
"description": "يستعاض عن عبارة Router Bandwidth Outbound 1s",
"message": "يستعاض عن عبارة Router Bandwidth Outbound 1s"
},
"router-net-tunnels-participating": {
"description": "يستعاض عن عبارة \" روتر \" التي تشارك في الكونت",
"message": "يستعاض عن عبارة \" روتر \" التي تشارك في الكونت"
},
"router-netdb-activepeers": {
"description": "يستعاض عن عبارة \" ناشطين \"",
"message": "يستعاض عن عبارة \" ناشطين \""
},
"router-netdb-fastpeers": {
"description": "يستعاض عن عبارة Router Fast Peers",
"message": "يستعاض عن عبارة Router Fast Peers"
},
"router-netdb-highcapacitypeers": {
"description": "يستعاض عن عبارة \" أصحاب القدرات العالية \"",
"message": "يستعاض عن عبارة \" أصحاب القدرات العالية \""
},
"router-netdb-isreseeding": {
"description": "يستعاض عن عبارة \" شبكة Router netDB Reseeding Status \"",
"message": "يستعاض عن عبارة \" شبكة Router netDB Reseeding Status \""
},
"router-netdb-knownpeers": {
"description": "يستعاض عن عبارة Router Known Peers",
"message": "يستعاض عن عبارة Router Known Peers"
},
"router-restart": {
"description": "ممر راحه",
"message": "ممر راحه"
},
"router-shutdown": {
"description": "ممر مقفل",
"message": "ممر مقفل"
},
"router-status": {
"description": "يستعاض عن عبارة \" Router Status \"",
"message": "يستعاض عن عبارة \" Router Status \""
},
"router-uptime": {
"description": "يستعاض عن عبارة \" الروت \" في وقت العمل",
"message": "يستعاض عن عبارة \" الروت \" في وقت العمل"
},
"router-version": {
"description": "يستعاض عن عبارة Router Version",
"message": "يستعاض عن عبارة Router Version"
},
"routerConsole": {
"description": "وصف لجهاز التحكم.",
"message": "إدخلوا جهاز التحكم بالجهاز الآلي الخاص بكم و مجموعة كاملة من التطبيقات والتشكيلات."
},
"routerPreface": {
"description": "وجه لقب المصفح",
"message": "Router Console"
},
"routerPrefacePrivate": {
"description": "وجه لقب المصفح",
"message": "Router Console (Private)"
},
"rpcHelpText": {
"description": "إعترف بخياراتك هنا إعترف بخياراتك هنا.",
"message": "إعترف بخياراتك هنا إعترف بخياراتك هنا."
},
"rpcHostText": {
"description": "مركز المراقبة:",
"message": "مركز المراقبة:"
},
"rpcPassText": {
"description": "كلمة سر المراقبة: رشاش من طراز RPC كلمة السر:",
"message": "كلمة سر المراقبة: رشاش من طراز RPC كلمة السر:"
},
"rpcPathText": {
"description": "مركز التحكم:",
"message": "مركز التحكم:"
},
"rpcPortText": {
"description": "الجهة المضيفة:",
"message": "الجهة المضيفة:"
},
"rtcDesc": {
"description": "وصف عمل الشبكة",
"message": "(ويرتي سي) معوقة بسبب الفشل، لكن يمكنك إعادة تشغيله وإجباره على تكريم العميل. إذا كنت مستعملاً لتمديد \"سنوفليك برووزر\" هذا الخيار معوق و \"ويب آر تي سي\" يتحول إلى عجز."
},
"signingcert": {
"description": "توقيع:",
"message": "توقيع:"
},
"siteLabel": {
"description": "Label for i2p site info",
"message": "العنوان/الموقع:"
},
"sitecert": {
"description": "شهادة المعلومات:",
"message": "شهادة المعلومات:"
},
"snark": {
"description": "Description for Bittorrent",
"message": "الوصول السريع إلى (سنارك)، وشبكة (بير - بير - بير - إي 2 بي) الخاصة بتقاسم الملفات."
},
"sourcehead": {
"description": "الحصول على رمز المصدر:",
"message": "الحصول على رمز المصدر:"
},
"sources": {
"description": "Description for the Source code link",
"message": "فجر رمز المصدر هنا"
},
"susimail": {
"description": "وصف البريد الإلكتروني",
"message": "الوصول السريع إلى موكّل البريد الإلكتروني لشبكة سوزي ماييل I2P."
},
"text-section-header": {
"description": "قاذفة الإنترنت غير المرئية",
"message": "قاذفة الإنترنت غير المرئية"
},
"text-section-proxyerr-header": {
"description": "\"المحقق (إير)\"",
"message": "\"المحقق (إير)\""
},
"text-section-torrents-header": {
"description": "الحمولات المروعة",
"message": "الحمولات المروعة"
},
"titlePreface": {
"description": "وجه لقب المصفح",
"message": "I2P Browser"
},
"titlePrefacePrivate": {
"description": "وجه لقب المصفح",
"message": "I2P Browser (Private)"
},
"toopie": {
"description": "للحصول على معلومات عن وضعية جهاز توجيه I2P الخاص بك، انتقل هنا:",
"message": "للحصول على معلومات عن وضعية جهاز توجيه I2P الخاص بك، انتقل هنا:"
},
"toopieHtmlHeadline": {
"description": "I2P Router Information",
"message": "I2P Router Information"
},
"toopieName": {
"description": "اسم الجانب.",
"message": "أيضاً html"
},
"toopieTLS": {
"description": "اسم فريق الأمن.",
"message": "Site Properties"
},
"topbar": {
"description": "الحمولة",
"message": "الحمولة"
},
"torPreface": {
"description": "وجه لقب المصفح",
"message": "Tor Manager"
},
"torPrefacePrivate": {
"description": "وجه لقب المصفح",
"message": "Tor Manager (Private)"
},
"torrent-action": {
"description": "تحميل",
"message": "تحميل"
},
"torrentControls": {
"description": "الضوابط الرهيبة",
"message": "الضوابط الرهيبة"
},
"torrentDownloads": {
"description": "الحمولات المروعة",
"message": "الحمولات المروعة"
},
"torrentPreface": {
"description": "وجه لقب المصفح",
"message": "Bittorrent"
},
"torrentPrefacePrivate": {
"description": "وجه لقب المصفح",
"message": "Bittorrent (Private)"
},
"torrentui-opener": {
"description": "Open WebUI",
"message": "Open WebUI"
},
"visit-irc": {
"description": "Visit IRC",
"message": "Visit IRC"
},
"webPreface": {
"description": "وجه لقب المصفح",
"message": "Web Browser"
},
"webPrefacePrivate": {
"description": "وجه لقب المصفح",
"message": "بروزر (بريفيت)"
},
"webpage": {
"description": "وهناك المزيد من المعلومات المتاحة هنا.",
"message": "وهناك المزيد من المعلومات المتاحة هنا."
},
"window-visit-console": {
"description": "I2P Router Console",
"message": "I2P Router Console"
},
"window-visit-help": {
"description": "تقديم المساعدة",
"message": "تقديم المساعدة"
},
"window-visit-homepage": {
"description": "قاذفة الإنترنت غير المرئية",
"message": "قاذفة الإنترنت غير المرئية"
},
"window-visit-i2p": {
"description": "I2P Project Homepage:",
"message": "I2P Project Homepage:"
},
"window-visit-i2ptunnel": {
"description": "مدير خدمات مخفي",
"message": "مدير خدمات مخفي"
},
"window-visit-index": {
"description": "Webextension Homepage:",
"message": "Webextension Homepage:"
},
"window-visit-releases": {
"description": "الإطلاقات:",
"message": "الإطلاقات:"
},
"window-visit-router": {
"description": "Router Console",
"message": "Router Console"
},
"window-visit-settings": {
"description": "افتحي البيئات",
"message": "افتحي البيئات"
},
"window-visit-snark": {
"description": "Bit Torrent",
"message": "Bit Torrent"
},
"window-visit-sources": {
"description": "المصدر:",
"message": "المصدر:"
},
"window-visit-susimail": {
"description": "E-Mail",
"message": "E-Mail"
},
"window-visit-toopie": {
"description": "Toopie",
"message": "Toopie"
},
"window-visit-torrent": {
"description": "For assistance, visit the torrent help page",
"message": "For assistance, visit the torrent help page"
},
"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:"
}
}

View File

@@ -1,738 +0,0 @@
{
"CertLabel": {
"description": "Zertifikat Information:",
"message": "Zertifikat Information:"
},
"SignedLabel": {
"description": "Unterzeichnet von:",
"message": "Unterzeichnet von:"
},
"TorrentTypeLabel": {
"description": "Torrent Links:",
"message": "Torrent Links:"
},
"TypeLabel": {
"description": "Torrent Links:",
"message": "Torrent Links:"
},
"aboutconsole": {
"description": "Um auf die Homepage der Router-Konsole zuzugreifen, gehen Sie hier:",
"message": "Um auf die Homepage der Router-Konsole zuzugreifen, gehen Sie hier:"
},
"abouthome": {
"description": "Beschreibung für die Schaltfläche Erweiterung.",
"message": "Weitere Informationen zu dieser Erweiterung finden Sie auf dieser Seite."
},
"addresstype": {
"description": "Anschrift:",
"message": "Anschrift:"
},
"applicationExplain": {
"description": "Beschreibung für Anwendungsbereich.",
"message": "Die I2P Router-Konsole und Anwendungen öffnen sich in ihrem eigenen Tab und bieten ihnen die gleichen Sicherheitsvorteile wie das Surfen mit dieser Erweiterung. Dies fügt mehr Schutz hinzu, indem jede Anwendung isoliert und andere Registerkarten (z.B. Social Media, etc.) vor Fingerabdrücken oder Skripten verhindert werden. Alle Registerkarten verwenden Farben, um Ihren I2P-Workflow zu verfolgen."
},
"applicationHeader": {
"description": "Header für Anwendungsbereiche.",
"message": "Anwendungen"
},
"beta": {
"description": "Dies ist ein experimentelles Produkt.",
"message": "Dies ist ein experimentelles Produkt."
},
"blogPreface": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "Blog"
},
"blogPrefacePrivate": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "Blog (Privat)"
},
"bookmarksButton": {
"description": "Re-Create Bookmarks",
"message": "Re-Create Bookmarks"
},
"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)"
},
"browser-action": {
"description": "Nach oben",
"message": "Nach oben"
},
"btRpcHostText": {
"description": "Torrent RPC Host:",
"message": "Torrent RPC Host:"
},
"btRpcPathText": {
"description": "Torrent RPC Pfad:",
"message": "Torrent RPC Pfad:"
},
"btRpcPortText": {
"description": "Torrent RPC Hafen:",
"message": "Torrent RPC Hafen:"
},
"certAbsent": {
"description": "Inhalt für Zertifikatsinfo, wenn abwesend",
"message": "Diese Website verwendet nicht HTTPS. Es wird noch kryptographisch von I2P überprüft."
},
"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"
},
"description": {
"description": "Sie können jetzt I2P in diesem Browser verwenden.",
"message": "Sie können jetzt I2P in diesem Browser verwenden."
},
"description2": {
"description": "Wenn Sie diese Seite sehen, ist es, weil ein Proxy-Fehler aufgetreten ist. Einige Informationen wurden zur Diagnose des Problems bereitgestellt.",
"message": "Wenn Sie diese Seite sehen, ist es, weil ein Proxy-Fehler aufgetreten ist. Einige Informationen wurden zur Diagnose des Problems bereitgestellt."
},
"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": "I2P Netzwerk-Browsing leicht gemacht."
},
"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"
},
"fliplinks": {
"description": "Erweiterung und I2P-Ressourcen",
"message": "Erweiterung und I2P-Ressourcen"
},
"forumMessage": {
"description": "Hilfe",
"message": "Besuchen Sie das I2P Forum, um mehr zu erfahren oder um Hilfe zu bitten"
},
"headline": {
"description": "Der unsichtbare Internet-Browser",
"message": "Der unsichtbare Internet-Browser"
},
"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:"
},
"i2ppage": {
"description": "Weitere Informationen finden Sie hier.",
"message": "Weitere Informationen finden Sie hier."
},
"i2ptunnel": {
"description": "Beschreibung für i2ptunnel",
"message": "Anzeigen von Proxystatus-Nachrichten und Konfigurieren von Diensten und Tunneln."
},
"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"
},
"label-router-activepeers": {
"description": "Aktive Peers:",
"message": "Aktive Peers:"
},
"label-router-bandwidth": {
"description": "Bandbreite",
"message": "Bandbreite"
},
"label-router-bw-inbound-15s": {
"description": "Inbound bw 15s:",
"message": "Inbound bw 15s:"
},
"label-router-bw-inbound-1s": {
"description": "Inbound bw 1s:",
"message": "Inbound bw 1s:"
},
"label-router-bw-outbound-15s": {
"description": "Ausstoß bw 15s:",
"message": "Ausstoß bw 15s:"
},
"label-router-bw-outbound-1s": {
"description": "Ausstoß bw 1s:",
"message": "Ausstoß bw 1s:"
},
"label-router-net-tunnels-participating": {
"description": "Transit Tunnels:",
"message": "Transit Tunnels:"
},
"label-router-netdb-fastpeers": {
"description": "Fast Peers:",
"message": "Fast Peers:"
},
"label-router-netdb-highcapacitypeers": {
"description": "Hohe Kapazität Peers:",
"message": "Hohe Kapazität Peers:"
},
"label-router-netdb-isreseeding": {
"description": "Status:",
"message": "Status:"
},
"label-router-netdb-knownpeers": {
"description": "Bekannte Peers:",
"message": "Bekannte Peers:"
},
"label-router-peers": {
"description": "Pestizid",
"message": "Pestizid"
},
"label-router-status": {
"description": "Status Router Status:",
"message": "Status Router Status:"
},
"label-router-uptime": {
"description": "Router-Uptime(Ms):",
"message": "Router-Uptime(Ms):"
},
"label-router-version": {
"description": "Router Version:",
"message": "Router Version:"
},
"links": {
"description": "Erweiterung und I2P-Ressourcen",
"message": "Erweiterung und I2P-Ressourcen"
},
"linksExplain": {
"description": "Wenn Sie mehr Informationen über I2P erhalten möchten, können Sie diese Links besuchen.",
"message": "Wenn Sie mehr Informationen über I2P erhalten möchten, können Sie diese Links besuchen."
},
"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."
},
"onboardingButtonFive": {
"description": "Verbesserung Ihrer Erfahrung",
"message": "Verbesserung Ihrer Erfahrung"
},
"onboardingButtonFour": {
"description": "Dateien teilen",
"message": "Dateien teilen"
},
"onboardingButtonOne": {
"description": "I2P Network Browsing und Non-I2P Network Browsing",
"message": "I2P Network Browsing und Non-I2P Network Browsing"
},
"onboardingButtonThree": {
"description": "Versteckte E-Mail",
"message": "Versteckte E-Mail"
},
"onboardingButtonTwo": {
"description": "Schutz von Netzwerk-Boundaries",
"message": "Schutz von Netzwerk-Boundaries"
},
"onboardingButtonZero": {
"description": "Schutz Ihrer Privatsphäre",
"message": "Schutz Ihrer Privatsphäre"
},
"onboardingContentFive": {
"description": "Diese Erweiterung kann mit anderen Erweiterungen kombiniert werden, die manchmal die Funktionalität verbessern. uBlock Origin, LocalCDN und jShelter sind nützlich, um das Seitenaufladen zu beschleunigen, Anzeigen zu blockieren und die Leistung von Javascript zu begrenzen. Für Benutzer, die alle Javascript blockieren möchten, wird NoScript empfohlen.",
"message": "Diese Erweiterung kann mit anderen Erweiterungen kombiniert werden, die manchmal die Funktionalität verbessern. uBlock Origin, LocalCDN und jShelter sind nützlich, um das Seitenaufladen zu beschleunigen, Anzeigen zu blockieren und die Leistung von Javascript zu begrenzen. Für Benutzer, die alle Javascript blockieren möchten, wird NoScript empfohlen."
},
"onboardingContentFour": {
"description": "I2P ist in der Lage, Peer-to-Peer-Anwendungen wie BitTorrent zu verwenden, um Ihre Identität zu schützen, wenn Sie Dateien teilen. Unser anonymer Bittorrent-Client ist im Browser verfügbar.",
"message": "I2P ist in der Lage, Peer-to-Peer-Anwendungen wie BitTorrent zu verwenden, um Ihre Identität zu schützen, wenn Sie Dateien teilen. Unser anonymer Bittorrent-Client ist im Browser verfügbar."
},
"onboardingContentOne": {
"description": "Diese Erweiterung funktioniert automatisch, wenn Sie I2P-Seiten durchsuchen. Wenn Sie I2P als Proxy für Nicht-I2P-Seiten verwenden möchten, verwenden Sie die I2P In Private Browsing Taste in der Symbolleiste und klicken Sie auf Neu I2P Browser Tab, um auf I2P Browsing in einem neuen Tab zu wechseln. Ihre Erfahrung beim Surfen im Internet kann ein wenig anders sein. Die Dinge können etwas langsamer sein, und je nach Sicherheitsniveau können einige Elemente nicht funktionieren oder laden. Sie können auch gebeten werden, zu beweisen, dass Sie ein Mensch und kein Roboter sind.",
"message": "Diese Erweiterung funktioniert automatisch, wenn Sie I2P-Seiten durchsuchen. Wenn Sie I2P als Proxy für Nicht-I2P-Seiten verwenden möchten, verwenden Sie die I2P In Private Browsing Taste in der Symbolleiste und klicken Sie auf Neu I2P Browser Tab, um auf I2P Browsing in einem neuen Tab zu wechseln. Ihre Erfahrung beim Surfen im Internet kann ein wenig anders sein. Die Dinge können etwas langsamer sein, und je nach Sicherheitsniveau können einige Elemente nicht funktionieren oder laden. Sie können auch gebeten werden, zu beweisen, dass Sie ein Mensch und kein Roboter sind."
},
"onboardingContentThree": {
"description": "Es gibt auch einen anonymen E-Mail-Service innerhalb von I2P, der von unserem Browser über das Menü direkt nach rechts zugänglich ist.",
"message": "Es gibt auch einen anonymen E-Mail-Service innerhalb von I2P, der von unserem Browser über das Menü direkt nach rechts zugänglich ist."
},
"onboardingContentTwo": {
"description": "I2P wird normalerweise über eine WebUI (The \"Router Console \") verwaltet, die der Benutzer manchmal im gleichen Browser ansieht, den sie verwenden, um Remote-Sites zu besuchen. Es ist wichtig zu verhindern, dass Websites auf Informationen von dieser WebUI und anderen lokal laufenden Dienstleistungen zugreifen können. Clearnet-Stellplätze bleiben im Firefox-Default-Container, aber sobald der Firefox-Default-Container eine *.onion oder *.i2p-Stelle anfordert, wird er sofort befüllt. Tor Browsers Identity-Management-Tooling steuert clearnet Tabs, und sie werden mit dem Standard I2P outproxy oder Outproxy Plugin proxied.",
"message": "I2P wird normalerweise über eine WebUI (The \" Router Console \") verwaltet, die der Benutzer manchmal in dem gleichen Browser ansieht, den sie verwenden, um Remote-Sites zu besuchen. Es ist wichtig zu verhindern, dass Websites auf Informationen von dieser WebUI und anderen lokal laufenden Dienstleistungen zugreifen können. Clearnet-Stellplätze bleiben im Firefox-Default-Container, aber sobald der Firefox-Default-Container eine *.onion oder *.i2p-Stelle anfordert, wird er sofort befüllt. Tor Browsers Identity-Management-Tooling steuert clearnet Tabs, und sie werden mit dem Standard I2P outproxy oder Outproxy Plugin proxied."
},
"onboardingContentZero": {
"description": "Wenn Sie I2P In Private Browsing Modus verwenden, sind Sie vor Verfolgung und Überwachung geschützt. Der I2P Browser isoliert Cookies und löscht Ihren Browserverlauf nach Ihrer Sitzung. Diese Änderungen stellen sicher, dass Ihre Privatsphäre und Sicherheit als Ihr Browser geschützt sind.",
"message": "Wenn Sie I2P In Private Browsing Modus verwenden, sind Sie vor Verfolgung und Überwachung geschützt. Der I2P Browser isoliert Cookies und löscht Ihren Browserverlauf nach Ihrer Sitzung. Diese Änderungen stellen sicher, dass Ihre Privatsphäre und Sicherheit als Ihr Browser geschützt sind."
},
"onboardingFive": {
"description": "Erfahrungen Tipps",
"message": "Erfahrungen Tipps"
},
"onboardingFour": {
"description": "Das Web durchsuchen",
"message": "Das Web durchsuchen"
},
"onboardingOne": {
"description": "Konfigurieren Sie Ihre Erfahrung",
"message": "Konfigurieren Sie Ihre Erfahrung"
},
"onboardingThree": {
"description": "Versteckte E-Mail",
"message": "Versteckte E-Mail"
},
"onboardingTitle": {
"description": "Über I2P In Private Browsing",
"message": "Über I2P In Private Browsing"
},
"onboardingTwo": {
"description": "Teilen von Dateien",
"message": "Teilen von Dateien"
},
"onboardingZero": {
"description": "Schutz Ihrer Privatsphäre",
"message": "Schutz Ihrer Privatsphäre"
},
"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"
},
"proxy-check": {
"description": "Proxy ist bereit.",
"message": "Proxy ist bereit."
},
"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"
},
"readyness": {
"description": "Proxy ist bereit.",
"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"
},
"returnhome": {
"description": "/",
"message": "/"
},
"router-net-bw-inbound-15s": {
"description": "Ersetzen mit Router Bandwidth Outbound 15s",
"message": "Ersetzen mit Router Bandwidth Outbound 15s"
},
"router-net-bw-inbound-1s": {
"description": "Ersetzen mit Router Bandbreite Inbound 1s",
"message": "Ersetzen mit Router Bandbreite Inbound 1s"
},
"router-net-bw-outbound-15s": {
"description": "Ersetzen mit Router Bandwidth Outbound 15s",
"message": "Ersetzen mit Router Bandwidth Outbound 15s"
},
"router-net-bw-outbound-1s": {
"description": "Ersetzen mit Router Bandwidth Outbound 1s",
"message": "Ersetzen mit Router Bandwidth Outbound 1s"
},
"router-net-tunnels-participating": {
"description": "Ersetzen mit Router Participing Tunnel Count",
"message": "Ersetzen mit Router Participing Tunnel Count"
},
"router-netdb-activepeers": {
"description": "Ersetzen mit Router Active Peers",
"message": "Ersetzen mit Router Active Peers"
},
"router-netdb-fastpeers": {
"description": "Ersetzen mit Router Fast Peers",
"message": "Ersetzen mit Router Fast Peers"
},
"router-netdb-highcapacitypeers": {
"description": "Ersetzen mit High Capacity Peers",
"message": "Ersetzen mit High Capacity Peers"
},
"router-netdb-isreseeding": {
"description": "Ersetzen mit Router netDB Ersatzstatus",
"message": "Ersetzen mit Router netDB Ersatzstatus"
},
"router-netdb-knownpeers": {
"description": "Ersetzen mit Router bekannten Peers",
"message": "Ersetzen mit Router bekannten Peers"
},
"router-restart": {
"description": "Angenehm Router neu starten",
"message": "Angenehm Router neu starten"
},
"router-shutdown": {
"description": "Anmutig herunterfahren Router",
"message": "Anmutig herunterfahren Router"
},
"router-status": {
"description": "Ersetzen mit Router Status",
"message": "Ersetzen mit Router Status"
},
"router-uptime": {
"description": "Ersetzen mit Router-Uptime",
"message": "Ersetzen mit Router-Uptime"
},
"router-version": {
"description": "Ersetzen mit Router Version",
"message": "Ersetzen mit Router Version"
},
"routerConsole": {
"description": "Beschreibung für die Router-Konsole.",
"message": "Greifen Sie auf Ihre I2P Router-Konsole und das gesamte Spektrum an Anwendungen und Konfigurationen zu."
},
"routerPreface": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "Router Console"
},
"routerPrefacePrivate": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "Router Console (Private)"
},
"rpcHelpText": {
"description": "Konfigurieren Sie hier Ihre I2PControl-Optionen. Konfigurieren Sie hier Ihre Bittorrent-Optionen.",
"message": "Konfigurieren Sie hier Ihre I2PControl-Optionen. Konfigurieren Sie hier Ihre Bittorrent-Optionen."
},
"rpcHostText": {
"description": "Kontrollhafen:",
"message": "Kontrollhafen:"
},
"rpcPassText": {
"description": "Kontroll-Passwort: Torrent RPC Passwort:",
"message": "Kontroll-Passwort: Torrent RPC Passwort:"
},
"rpcPathText": {
"description": "Kontrollpfad:",
"message": "Kontrollpfad:"
},
"rpcPortText": {
"description": "Kontroll Host:",
"message": "Kontroll Host:"
},
"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."
},
"signingcert": {
"description": "Unterzeichnet von:",
"message": "Unterzeichnet von:"
},
"siteLabel": {
"description": "Label für i2p Site Info",
"message": "Anschrift/Site Information:"
},
"sitecert": {
"description": "Zertifikat Information:",
"message": "Zertifikat Information:"
},
"snark": {
"description": "Beschreibung für Bittorrent",
"message": "Schneller Zugriff auf Snark, die Peer-to-peer I2P Netzwerk-spezifische Dateifreigabe-Anwendung."
},
"sourcehead": {
"description": "Erhalten Sie den Quellcode:",
"message": "Erhalten Sie den Quellcode:"
},
"sources": {
"description": "Beschreibung des Quellcode-Links",
"message": "Hier den Quellcode durchsuchen"
},
"susimail": {
"description": "Beschreibung für E-Mail",
"message": "Schneller Zugriff auf den SusiMail I2P Netzwerk-E-Mail-Client."
},
"text-section-header": {
"description": "Der unsichtbare Internet-Browser",
"message": "Der unsichtbare Internet-Browser"
},
"text-section-proxyerr-header": {
"description": "Ein Proxy-Fehler wurde behoben",
"message": "Ein Proxy-Fehler wurde behoben"
},
"text-section-torrents-header": {
"description": "Torrent Downloads",
"message": "Torrent Downloads"
},
"titlePreface": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "I2P Browser"
},
"titlePrefacePrivate": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "I2P Browser (Privat)"
},
"toopie": {
"description": "Informationen Ã14ber Ihren I2P-Routerstatus finden Sie hier:",
"message": "Informationen Ã14ber Ihren I2P-Routerstatus finden Sie hier:"
},
"toopieHtmlHeadline": {
"description": "I2P Router Informationen",
"message": "I2P Router Informationen"
},
"toopieName": {
"description": "Name der Seitenleiste.",
"message": "auch. html"
},
"toopieTLS": {
"description": "Name des Sicherheitspanels.",
"message": "Site Properties"
},
"topbar": {
"description": "Nach oben",
"message": "Nach oben"
},
"torPreface": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "Tor Manager"
},
"torPrefacePrivate": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "Tor Manager (Private)"
},
"torrent-action": {
"description": "Downloads",
"message": "Downloads"
},
"torrentControls": {
"description": "Torrent Controls",
"message": "Torrent Controls"
},
"torrentDownloads": {
"description": "Torrent Downloads",
"message": "Torrent Downloads"
},
"torrentPreface": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "In den Warenkorb"
},
"torrentPrefacePrivate": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "Bittorrent (Privat)"
},
"torrentui-opener": {
"description": "Open WebUI",
"message": "Open WebUI"
},
"visit-irc": {
"description": "Besuchen Sie IRC",
"message": "Besuchen Sie IRC"
},
"webPreface": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "Web Browser"
},
"webPrefacePrivate": {
"description": "Vorwort für die Browser-Titelleiste",
"message": "Web Browser (Private)"
},
"webpage": {
"description": "Weitere Informationen finden Sie hier.",
"message": "Weitere Informationen finden Sie hier."
},
"window-visit-console": {
"description": "I2P Router Konsole",
"message": "I2P Router Konsole"
},
"window-visit-help": {
"description": "Unterstützungsseite",
"message": "Unterstützungsseite"
},
"window-visit-homepage": {
"description": "Der unsichtbare Internet-Browser",
"message": "Der unsichtbare Internet-Browser"
},
"window-visit-i2p": {
"description": "I2P Projektseite:",
"message": "I2P Projektseite:"
},
"window-visit-i2ptunnel": {
"description": "Hidden Services Manager",
"message": "Hidden Services Manager"
},
"window-visit-index": {
"description": "Webextension Homepage:",
"message": "Webextension Homepage:"
},
"window-visit-releases": {
"description": "Veröffentlichungen:",
"message": "Veröffentlichungen:"
},
"window-visit-router": {
"description": "Router Console",
"message": "Router Console"
},
"window-visit-settings": {
"description": "Öffnen Sie die Einstellungen",
"message": "Öffnen Sie die Einstellungen"
},
"window-visit-snark": {
"description": "BitTorrent",
"message": "BitTorrent"
},
"window-visit-sources": {
"description": "Quelle Code:",
"message": "Quelle Code:"
},
"window-visit-susimail": {
"description": "E-Mail",
"message": "E-Mail"
},
"window-visit-toopie": {
"description": "Toopie",
"message": "Toopie"
},
"window-visit-torrent": {
"description": "Für Hilfe, besuchen Sie die Torrent Hilfe Seite",
"message": "Für Hilfe, besuchen Sie die Torrent Hilfe Seite"
},
"windowVisitConsole": {
"description": "Router Console Label.",
"message": "Router Console:"
},
"windowVisitHelppage": {
"description": "Hilfeseite für das Erweiterungslabel.",
"message": "WebExtension Informationen:"
},
"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:"
}
}

View File

@@ -1,699 +0,0 @@
{
"CertLabel": {
"description": "Certificate Information:",
"message": "Certificate Information:"
},
"SignedLabel": { "description": "Signed By:", "message": "Signed By:" },
"TorrentTypeLabel": {
"description": "Torrent Links:",
"message": "Torrent Links:"
},
"TypeLabel": { "description": "Torrent Links:", "message": "Torrent Links:" },
"aboutconsole": {
"description": "To access the homepage of the router console, go here:",
"message": "To access the homepage of the router console, go here:"
},
"abouthome": {
"description": "Description for the extension button page.",
"message": "For more information about this extension, visit this page."
},
"addresstype": { "description": "Address Type:", "message": "Address Type:" },
"applicationExplain": {
"description": "Description for application section.",
"message": "The I2P router console and applications open in their own tab, providing them with the same security benefits as browsing with this extension. This adds more protection by isolating each application and preventing other tabs ( ie social media, etc ) from fingerprinting or scripts. All tabs use identifying colours to keep track of your I2P workflow."
},
"applicationHeader": {
"description": "Header for applications section.",
"message": "Applications"
},
"beta": {
"description": "This is an experimental product.",
"message": "This is an experimental product."
},
"blogPreface": {
"description": "Preface for the browser titlebar",
"message": "Blog"
},
"blogPrefacePrivate": {
"description": "Preface for the browser titlebar",
"message": "Blog (Private)"
},
"bookmarksButton": {
"description": "Re-Create Bookmarks",
"message": "Re-Create Bookmarks"
},
"botePreface": {
"description": "Preface for the browser titlebar",
"message": "I2P-Bote Mail"
},
"botePrefacePrivate": {
"description": "Preface for the browser titlebar",
"message": "I2P-Bote Mail (Private)"
},
"browser-action": { "description": "Browse", "message": "Browse" },
"btRpcHostText": {
"description": "Torrent RPC Host:",
"message": "Torrent RPC Host:"
},
"btRpcPathText": {
"description": "Torrent RPC Path:",
"message": "Torrent RPC Path:"
},
"btRpcPortText": {
"description": "Torrent RPC Port:",
"message": "Torrent RPC Port:"
},
"certAbsent": {
"description": "Content for certificate info if absent",
"message": "This site is not using HTTPS. It is still verified cryptographically by I2P."
},
"certPresent": {
"description": "Content for certificate info if present",
"message": "This site is using HTTPS. HTTPS over I2P is experimental and requires self-signed certificates or alternate root authorites."
},
"clearData": {
"description": "Clear Browsing Data menu item.",
"message": "Clear Browsing Data: "
},
"clearDesc": {
"description": "Clear browsing data action description.",
"message": "Use this to erase your I2P browsing data."
},
"controlExplain": {
"description": "Introduce the control panel.",
"message": "These controls are used to tailor your I2P Browsing Experience"
},
"controlHeader": {
"description": "Headline for control panel.",
"message": "Control"
},
"controlHelpText": {
"description": "Help for configuring the options for the Reset Tunnel button",
"message": "Configure your router console here."
},
"controlHostText": {
"description": "Host for the Router Console",
"message": "Control Host: "
},
"controlHostValue": {
"description": "Host for the Router Console",
"message": "127.0.0.1"
},
"controlPortText": {
"description": "Port for the Router Console",
"message": "Control Port: "
},
"controlPortValue": {
"description": "Port for the Router Console",
"message": "7657"
},
"description": {
"description": "You are now able to use I2P in this browser.",
"message": "You are now able to use I2P in this browser."
},
"description2": {
"description": "If you're seeing this page, it is because a proxy error has occurred. Some information has been provided to help you diagnose the issue.",
"message": "If you're seeing this page, it is because a proxy error has occurred. Some information has been provided to help you diagnose the issue."
},
"disableHistory": {
"description": "History checkbox label.",
"message": "Disable History in I2P Tabs?"
},
"enableWebRTC": {
"description": "WebRTC checkbox label.",
"message": "Enable WebRTC with proxy?"
},
"extensionDescription": {
"description": "Description of the extension.",
"message": "I2P network browsing made easy."
},
"extensionName": {
"description": "Name of the extension.",
"message": "I2P In Private Browsing"
},
"extensionNameVariant": {
"description": "Name of the extension.",
"message": "I2P In Private Browsing - Rhizome Variant"
},
"extensionPreface": {
"description": "Preface for the browser titlebar",
"message": "I2P Management"
},
"extensionVersion": {
"description": "Version of the extension.",
"message": "1.28"
},
"fliplinks": {
"description": "Extension and I2P Resources",
"message": "Extension and I2P Resources"
},
"forumMessage": {
"description": "Help Message",
"message": "Visit the I2P Forum to learn more or ask for assistance"
},
"headline": {
"description": "The Invisible Internet Browser",
"message": "The Invisible Internet Browser"
},
"help": {
"description": "Description for the extension button page.",
"message": "For more information about this extension, visit this page."
},
"helpMessage": {
"description": "Help Message",
"message": "Get additional help"
},
"histDesc": {
"description": "History action description",
"message": "History is automatically cleared when your I2P tabs are closed. If you want to clear history as you go, check this box."
},
"homepage": {
"description": "Find more information",
"message": "More information is available here"
},
"hostText": {
"description": "Host for the HTTP or SOCKS5 Proxy",
"message": "Host: "
},
"i2ppage": {
"description": "More information is available here.",
"message": "More information is available here."
},
"i2ptunnel": {
"description": "Description for i2ptunnel",
"message": "View proxy status messages and configure services and tunnels."
},
"i2ptunnelPreface": {
"description": "Preface for the browser titlebar",
"message": "Hidden Services Manager"
},
"i2ptunnelPrefacePrivate": {
"description": "Preface for the browser titlebar",
"message": "Hidden Services Manager (Private)"
},
"infoMessage": {
"description": "Help Message",
"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."
},
"infoTitle": {
"description": "Title for the help menu",
"message": "I2P Help"
},
"ircPreface": {
"description": "Preface for the browser titlebar",
"message": "Dispatch IRC"
},
"ircPrefacePrivate": {
"description": "Preface for the browser titlebar",
"message": "Dispatch IRC (Private)"
},
"isBase32": {
"description": "Message for site info panel base32",
"message": "I2P Base32-Formatted Address"
},
"isHostName": {
"description": "Message for the site info panel hostname",
"message": "I2P Jump Hostname"
},
"label-router-activepeers": {
"description": "Active Peers:",
"message": "Active Peers:"
},
"label-router-bandwidth": {
"description": "Bandwidth",
"message": "Bandwidth"
},
"label-router-bw-inbound-15s": {
"description": "Inbound bw 15s:",
"message": "Inbound bw 15s:"
},
"label-router-bw-inbound-1s": {
"description": "Inbound bw 1s:",
"message": "Inbound bw 1s:"
},
"label-router-bw-outbound-15s": {
"description": "Outbound bw 15s:",
"message": "Outbound bw 15s:"
},
"label-router-bw-outbound-1s": {
"description": "Outbound bw 1s:",
"message": "Outbound bw 1s:"
},
"label-router-net-tunnels-participating": {
"description": "Transit Tunnels:",
"message": "Transit Tunnels:"
},
"label-router-netdb-fastpeers": {
"description": "Fast Peers:",
"message": "Fast Peers:"
},
"label-router-netdb-highcapacitypeers": {
"description": "High Capacity Peers:",
"message": "High Capacity Peers:"
},
"label-router-netdb-isreseeding": {
"description": "Reseed status:",
"message": "Reseed status:"
},
"label-router-netdb-knownpeers": {
"description": "Known Peers:",
"message": "Known Peers:"
},
"label-router-peers": { "description": "Peers", "message": "Peers" },
"label-router-status": {
"description": "Status Router Status:",
"message": "Status Router Status:"
},
"label-router-uptime": {
"description": "Router Uptime(Ms):",
"message": "Router Uptime(Ms):"
},
"label-router-version": {
"description": "Router Version:",
"message": "Router Version:"
},
"links": {
"description": "Extension and I2P Resources",
"message": "Extension and I2P Resources"
},
"linksExplain": {
"description": "If you want to get more information about I2P, you can visit these links.",
"message": "If you want to get more information about I2P, you can visit these links."
},
"mailPreface": {
"description": "Preface for the browser titlebar",
"message": "Web Mail"
},
"mailPrefacePrivate": {
"description": "Preface for the browser titlebar",
"message": "Web Mail (Private)"
},
"muwirePreface": {
"description": "Preface for the browser titlebar",
"message": "MuWire"
},
"muwirePrefacePrivate": {
"description": "Preface for the browser titlebar",
"message": "MuWire (Private)"
},
"newsMessage": {
"description": "Help Message",
"message": "Visit the I2P Blog to learn the latest about i2p."
},
"onboardingButtonFive": {
"description": "Improving your Experience",
"message": "Improving your Experience"
},
"onboardingButtonFour": {
"description": "Sharing Files",
"message": "Sharing files"
},
"onboardingButtonOne": {
"description": "I2P Network Browsing and Non-I2P Network Browsing",
"message": "I2P Network Browsing and Non-I2P Network Browsing"
},
"onboardingButtonThree": {
"description": "Hidden e-mail",
"message": "Hidden e-mail"
},
"onboardingButtonTwo": {
"description": "Protecting Network Boundaries",
"message": "Protecting Network Boundaries"
},
"onboardingButtonZero": {
"description": "Protect your Privacy",
"message": "Protect your Privacy"
},
"onboardingContentFive": {
"description": "This extension can be combined with other extensions which sometimes improve it's functionality. uBlock Origin, LocalCDN, and jShelter are useful for speeding up page loading, blocking ads, and limiting the power of Javascript. For users who want to block all Javascript, NoScript is recommended.",
"message": "This extension can be combined with other extensions which sometimes improve it's functionality. uBlock Origin, LocalCDN, and jShelter are useful for speeding up page loading, blocking ads, and limiting the power of Javascript. For users who want to block all Javascript, NoScript is recommended."
},
"onboardingContentFour": {
"description": "I2P is capable of using peer-to-peer applications like BitTorrent, protecting your identity when you share files. Our anonymous bittorrent client is available in the browser.",
"message": "I2P is capable of using peer-to-peer applications like BitTorrent, protecting your identity when you share files. Our anonymous bittorrent client is available in the browser."
},
"onboardingContentOne": {
"description": "This extension works automatically when you are browsing I2P sites. If you want to use I2P as a proxy to non-I2P sites, use the I2P In Private Browsing button in the toolbar and click New I2P Browser Tab to switch to I2P Browsing in a new tab. Your experience while browsing the internet may be a little different. Things may be a bit slower, and depending on your security level, some elements may not work or load. You may also be asked to prove you are a human and not a robot.",
"message": "This extension works automatically when you are browsing I2P sites. If you want to use I2P as a proxy to non-I2P sites, use the I2P In Private Browsing button in the toolbar and click New I2P Browser Tab to switch to I2P Browsing in a new tab. Your experience while browsing the internet may be a little different. Things may be a bit slower, and depending on your security level, some elements may not work or load. You may also be asked to prove you are a human and not a robot."
},
"onboardingContentThree": {
"description": "There is also an anonymous e-mail service available inside of I2P, which is accessible from our browser via the menu directly to the right.",
"message": "There is also an anonymous e-mail service available inside of I2P, which is accessible from our browser via the menu directly to the right."
},
"onboardingContentTwo": {
"description": "I2P is normally administered via a WebUI(The \"Router Console \"), which the user sometimes views in the same browser they use to visit remote sites. It is essential to prevent sites from being able to access information from this WebUI and other locally running services. Clearnet sites remain in the firefox-default container, but as soon as the firefox-default container requests a *.onion or *.i2p site, it will be instantly containerized. Tor Browser's identity management tooling controls clearnet tabs, and they are proxied using the default I2P outproxy or outproxy plugin.",
"message": "I2P is normally administered via a WebUI(The \" Router Console \"), which the user sometimes views in the same browser they use to visit remote sites. It is essential to prevent sites from being able to access information from this WebUI and other locally running services. Clearnet sites remain in the firefox-default container, but as soon as the firefox-default container requests a *.onion or *.i2p site, it will be instantly containerized. Tor Browser's identity management tooling controls clearnet tabs, and they are proxied using the default I2P outproxy or outproxy plugin."
},
"onboardingContentZero": {
"description": " When using I2P In Private Browsing Mode, you are protected against tracking and surveillance.The I2P Browser isolates cookies and deletes your browser history after your session. These modifications ensure your privacy and security are protected as your browse.",
"message": " When using I2P In Private Browsing Mode, you are protected against tracking and surveillance.The I2P Browser isolates cookies and deletes your browser history after your session. These modifications ensure your privacy and security are protected as your browse."
},
"onboardingFive": {
"description": "Experience Tips",
"message": "Experience Tips"
},
"onboardingFour": {
"description": "Browsing the Web",
"message": "Browsing the Web"
},
"onboardingOne": {
"description": "Configure your Experience",
"message": "Configure your Experience"
},
"onboardingThree": {
"description": "Hidden e-mail",
"message": "Hidden e-mail"
},
"onboardingTitle": {
"description": "About I2P In Private Browsing",
"message": "About I2P In Private Browsing"
},
"onboardingTwo": { "description": "Share Files", "message": "Share Files" },
"onboardingZero": {
"description": "Protect your Privacy",
"message": "Protect your Privacy"
},
"portText": {
"description": "Port for the HTTP or SOCKS5 Proxy",
"message": "Port: "
},
"protocolHandlerValue": {
"description": "Value for the magnet protocol handler",
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s\u0026action=Add\u0026foo=Add+torrent"
},
"proxy-check": {
"description": "Proxy is ready.",
"message": "Proxy is ready."
},
"proxyFailedStatus": {
"description": "Proxy failed status.",
"message": "Proxy is not ready"
},
"consoleFailedStatus": {
"description": "Proxy failed status.",
"message": "Console is not available, I2P is not started yet. If you have not intstalled I2P yet, please get it from https://geti2p.net."
},
"proxyHelpText": {
"description": "Help for configuring the options for the Reset Tunnel button",
"message": "Configure your I2P proxy here."
},
"proxySuccessStatus": {
"description": "Proxy failed status.",
"message": "Proxy is ready"
},
"proxyConsoleSuccessStatus": {
"description": "Proxy failed status.",
"message": "I2P is running."
},
"readyness": {
"description": "Proxy is ready.",
"message": "Proxy is ready."
},
"routerness": {
"description": "Proxy is ready.",
"message": "Router is ready."
},
"releases": {
"description": "Description for new release page",
"message": "Check for new releases here"
},
"resetMessage": {
"description": "Message for the Reset Tunnel button",
"message": "Reset Tunnel"
},
"returnhome": { "description": "/", "message": "/" },
"router-net-bw-inbound-15s": {
"description": "Replace with Router Bandwidth Outbound 15s",
"message": "Replace with Router Bandwidth Outbound 15s"
},
"router-net-bw-inbound-1s": {
"description": "Replace with Router Bandwidth Inbound 1s",
"message": "Replace with Router Bandwidth Inbound 1s"
},
"router-net-bw-outbound-15s": {
"description": "Replace with Router Bandwidth Outbound 15s",
"message": "Replace with Router Bandwidth Outbound 15s"
},
"router-net-bw-outbound-1s": {
"description": "Replace with Router Bandwidth Outbound 1s",
"message": "Replace with Router Bandwidth Outbound 1s"
},
"router-net-tunnels-participating": {
"description": "Replace with Router Participating Tunnel Count",
"message": "Replace with Router Participating Tunnel Count"
},
"router-netdb-activepeers": {
"description": "Replace with Router Active Peers",
"message": "Replace with Router Active Peers"
},
"router-netdb-fastpeers": {
"description": "Replace with Router Fast Peers",
"message": "Replace with Router Fast Peers"
},
"router-netdb-highcapacitypeers": {
"description": "Replace with High Capacity Peers",
"message": "Replace with High Capacity Peers"
},
"router-netdb-isreseeding": {
"description": "Replace with Router netDB Reseeding Status",
"message": "Replace with Router netDB Reseeding Status"
},
"router-netdb-knownpeers": {
"description": "Replace with Router Known Peers",
"message": "Replace with Router Known Peers"
},
"router-restart": {
"description": "Gracefully restart router",
"message": "Gracefully restart router"
},
"router-shutdown": {
"description": "Gracefully shutdown router",
"message": "Gracefully shutdown router"
},
"router-status": {
"description": "Replace with Router Status",
"message": "Replace with Router Status"
},
"router-uptime": {
"description": "Replace with Router Uptime",
"message": "Replace with Router Uptime"
},
"router-version": {
"description": "Replace with Router Version",
"message": "Replace with Router Version"
},
"routerConsole": {
"description": "Description for the router console.",
"message": "Access your I2P router console and its full range of applications and configurations."
},
"routerPreface": {
"description": "Preface for the browser titlebar",
"message": "Router Console"
},
"routerPrefacePrivate": {
"description": "Preface for the browser titlebar",
"message": "Router Console (Private)"
},
"rpcHelpText": {
"description": "Configure your I2PControl options here. Configure your Bittorrent options here.",
"message": "Configure your I2PControl options here. Configure your Bittorrent options here."
},
"rpcHostText": { "description": "Control Port:", "message": "Control Port:" },
"rpcPassText": {
"description": "Control Password: Torrent RPC Password:",
"message": "Control Password: Torrent RPC Password:"
},
"rpcPathText": { "description": "Control Path:", "message": "Control Path:" },
"rpcPortText": { "description": "Control Host:", "message": "Control Host:" },
"rtcDesc": {
"description": "WebRTC action description",
"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."
},
"signingcert": { "description": "Signed By:", "message": "Signed By:" },
"siteLabel": {
"description": "Label for i2p site info",
"message": "Address/Site Information:"
},
"sitecert": {
"description": "Certificate Information:",
"message": "Certificate Information:"
},
"snark": {
"description": "Description for Bittorrent",
"message": "Quick access to Snark, the Peer-to-peer I2P network specific file sharing application."
},
"sourcehead": {
"description": "Get the source code:",
"message": "Get the source code:"
},
"sources": {
"description": "Description for the Source code link",
"message": "Browse the source code here"
},
"susimail": {
"description": "Description for e-mail",
"message": "Quick access to the SusiMail I2P network email client."
},
"text-section-header": {
"description": "The Invisible Internet Browser",
"message": "The Invisible Internet Browser"
},
"text-section-proxyerr-header": {
"description": "A Proxy Error has Occurred",
"message": "A Proxy Error has Occurred"
},
"text-section-torrents-header": {
"description": "Torrent Downloads",
"message": "Torrent Downloads"
},
"titlePreface": {
"description": "Preface for the browser titlebar",
"message": "I2P Browser"
},
"titlePrefacePrivate": {
"description": "Preface for the browser titlebar",
"message": "I2P Browser (Private)"
},
"toopie": {
"description": "For information about your I2P router status, go here:",
"message": "For information about your I2P router status, go here:"
},
"toopieHtmlHeadline": {
"description": "I2P Router Information",
"message": "I2P Router Information"
},
"toopieName": {
"description": "Name of the sidebar.",
"message": "toopie.html"
},
"toopieTLS": {
"description": "Name of the security panel.",
"message": "Site Properties"
},
"topbar": { "description": "Browse Download", "message": "Browse Download" },
"torPreface": {
"description": "Preface for the browser titlebar",
"message": "Tor Manager"
},
"torPrefacePrivate": {
"description": "Preface for the browser titlebar",
"message": "Tor Manager (Private)"
},
"torrent-action": { "description": "Download", "message": "Download" },
"torrentControls": {
"description": "Torrent Controls",
"message": "Torrent Controls"
},
"torrentDownloads": {
"description": "Torrent Downloads",
"message": "Torrent Downloads"
},
"torrentPreface": {
"description": "Preface for the browser titlebar",
"message": "Bittorrent"
},
"torrentPrefacePrivate": {
"description": "Preface for the browser titlebar",
"message": "Bittorrent (Private)"
},
"torrentui-opener": { "description": "Open WebUI", "message": "Open WebUI" },
"visit-irc": { "description": "Visit IRC", "message": "Visit IRC" },
"webPreface": {
"description": "Preface for the browser titlebar",
"message": "Web Browser"
},
"webPrefacePrivate": {
"description": "Preface for the browser titlebar",
"message": "Web Browser (Private)"
},
"webpage": {
"description": "More information is available here.",
"message": "More information is available here."
},
"window-visit-console": {
"description": "I2P Router Console",
"message": "I2P Router Console"
},
"window-visit-help": {
"description": "Extension Help Page",
"message": "Extension Help Page"
},
"window-visit-homepage": {
"description": "The Invisible Internet Browser",
"message": "The Invisible Internet Browser"
},
"window-visit-i2p": {
"description": "I2P Project Homepage:",
"message": "I2P Project Homepage:"
},
"window-visit-i2ptunnel": {
"description": "Hidden Services Manager",
"message": "Hidden Services Manager"
},
"window-visit-index": {
"description": "Webextension Homepage:",
"message": "Webextension Homepage:"
},
"window-visit-releases": {
"description": "Releases:",
"message": "Releases:"
},
"window-visit-router": {
"description": "Router Console",
"message": "Router Console"
},
"window-visit-settings": {
"description": "Open the settings",
"message": "Open the settings"
},
"window-visit-snark": {
"description": "BitTorrent",
"message": "BitTorrent"
},
"window-visit-sources": {
"description": "Source Code:",
"message": "Source Code:"
},
"window-visit-susimail": { "description": "E-Mail", "message": "E-Mail" },
"window-visit-toopie": { "description": "Toopie", "message": "Toopie" },
"window-visit-torrent": {
"description": "For assistance, visit the torrent help page",
"message": "For assistance, visit the torrent help page"
},
"windowVisitConsole": {
"description": "Router Console label.",
"message": "Router Console: "
},
"windowVisitHelppage": {
"description": "Help page for the extension label.",
"message": "WebExtension Information: "
},
"windowVisitHomepage": {
"description": "Home page for the extension label.",
"message": "Home Page: "
},
"windowVisitI2ptunnel": {
"description": "Title for i2ptunnel",
"message": "Hidden Services Manager: "
},
"windowVisitReleases": {
"description": "Visit the release page",
"message": "Extension Releases: "
},
"windowVisitSnark": {
"description": "Title for Bittorrent",
"message": "Bittorrent: "
},
"windowVisitSources": {
"description": "Title for source code link",
"message": "Extension Source Code: "
},
"windowVisitSusimail": {
"description": "Title for e-mail",
"message": "E-Mail: "
},
"windowVisitWebPage": {
"description": "Visit extension homepage on Github",
"message": "Extension Home Page: "
}
}

View File

@@ -1,738 +0,0 @@
{
"CertLabel": {
"description": "Información del certificado:",
"message": "Información del certificado:"
},
"SignedLabel": {
"description": "Firmada por:",
"message": "Firmada por:"
},
"TorrentTypeLabel": {
"description": "Torrent Links:",
"message": "Torrent Links:"
},
"TypeLabel": {
"description": "Torrent Links:",
"message": "Torrent Links:"
},
"aboutconsole": {
"description": "Para acceder a la página principal de la consola router, vaya aquí:",
"message": "Para acceder a la página principal de la consola router, vaya aquí:"
},
"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."
},
"addresstype": {
"description": "Tipo de dirección:",
"message": "Tipo de dirección:"
},
"applicationExplain": {
"description": "Descripción para sección de aplicación.",
"message": "La consola de router I2P y las aplicaciones se abren en su propia pestaña, proporcionándoles los mismos beneficios de seguridad que navegar con esta extensión. Esto añade más protección al aislar cada aplicación y prevenir otras pestañas (es decir, redes sociales, etc) de las huellas dactilares o scripts. Todas las pestañas utilizan colores de identificación para hacer un seguimiento de su flujo de trabajo I2P."
},
"applicationHeader": {
"description": "Header for applications section.",
"message": "Aplicaciones"
},
"beta": {
"description": "Este es un producto experimental.",
"message": "Este es un producto experimental."
},
"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)"
},
"bookmarksButton": {
"description": "Re-Crear marcadores",
"message": "Re-Crear marcadores"
},
"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)"
},
"browser-action": {
"description": "Navega",
"message": "Navega"
},
"btRpcHostText": {
"description": "Torrent RPC Host:",
"message": "Torrent RPC Host:"
},
"btRpcPathText": {
"description": "Torrent RPC Sendero:",
"message": "Torrent RPC Sendero:"
},
"btRpcPortText": {
"description": "Torrent RPC Puerto:",
"message": "Torrent RPC Puerto:"
},
"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."
},
"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"
},
"description": {
"description": "Ahora puede utilizar I2P en este navegador.",
"message": "Ahora puede utilizar I2P en este navegador."
},
"description2": {
"description": "Si estás viendo esta página, es porque se ha producido un error proxy. Se ha proporcionado información para ayudarle a diagnosticar el problema.",
"message": "Si estás viendo esta página, es porque se ha producido un error proxy. Se ha proporcionado información para ayudarle a diagnosticar el problema."
},
"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": "La navegación por red I2P se hizo fácil."
},
"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"
},
"fliplinks": {
"description": "Extension and I2P Resources",
"message": "Extension and I2P Resources"
},
"forumMessage": {
"description": "Mensaje de ayuda",
"message": "Visite el Foro I2P para aprender más o pedir asistencia"
},
"headline": {
"description": "El navegador de Internet invisible",
"message": "El navegador de Internet invisible"
},
"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:"
},
"i2ppage": {
"description": "Aquí hay más información.",
"message": "Aquí hay más información."
},
"i2ptunnel": {
"description": "Descripción para i2ptunnel",
"message": "Ver mensajes de estado proxy y configurar servicios y túneles."
},
"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"
},
"label-router-activepeers": {
"description": "Peers activos:",
"message": "Peers activos:"
},
"label-router-bandwidth": {
"description": "Ancho de banda",
"message": "Ancho de banda"
},
"label-router-bw-inbound-15s": {
"description": "Inbound bw 15s:",
"message": "Inbound bw 15s:"
},
"label-router-bw-inbound-1s": {
"description": "Inbound bw 1s:",
"message": "Inbound bw 1s:"
},
"label-router-bw-outbound-15s": {
"description": "Saliente bw 15s:",
"message": "Saliente bw 15s:"
},
"label-router-bw-outbound-1s": {
"description": "Saliente bw 1s:",
"message": "Saliente bw 1s:"
},
"label-router-net-tunnels-participating": {
"description": "Tunels de tránsito:",
"message": "Tunels de tránsito:"
},
"label-router-netdb-fastpeers": {
"description": "Peers rápidos:",
"message": "Peers rápidos:"
},
"label-router-netdb-highcapacitypeers": {
"description": "Alta capacidad Peers:",
"message": "Alta capacidad Peers:"
},
"label-router-netdb-isreseeding": {
"description": "Estado civil:",
"message": "Estado civil:"
},
"label-router-netdb-knownpeers": {
"description": "Peers conocidos:",
"message": "Peers conocidos:"
},
"label-router-peers": {
"description": "Peers",
"message": "Peers"
},
"label-router-status": {
"description": "Status Router Status:",
"message": "Status Router Status:"
},
"label-router-uptime": {
"description": "Router Uptime(Ms):",
"message": "Router Uptime(Ms):"
},
"label-router-version": {
"description": "Versión del router:",
"message": "Versión del router:"
},
"links": {
"description": "Extension and I2P Resources",
"message": "Extension and I2P Resources"
},
"linksExplain": {
"description": "Si desea obtener más información sobre I2P, puede visitar estos enlaces.",
"message": "Si desea obtener más información sobre I2P, puede visitar estos enlaces."
},
"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."
},
"onboardingButtonFive": {
"description": "Mejora tu Experiencia",
"message": "Mejora tu Experiencia"
},
"onboardingButtonFour": {
"description": "Compartir archivos",
"message": "Compartir archivos"
},
"onboardingButtonOne": {
"description": "Browsing de red I2P y Browsing de red no I2P",
"message": "Browsing de red I2P y Browsing de red no I2P"
},
"onboardingButtonThree": {
"description": "Correo electrónico oculto",
"message": "Correo electrónico oculto"
},
"onboardingButtonTwo": {
"description": "Red de protección de límites",
"message": "Red de protección de límites"
},
"onboardingButtonZero": {
"description": "Protege tu privacidad",
"message": "Protege tu privacidad"
},
"onboardingContentFive": {
"description": "Esta extensión se puede combinar con otras extensiones que a veces mejoran su funcionalidad. uBlock Origin, LocalCDN y jShelter son útiles para acelerar la carga de página, bloquear anuncios y limitar el poder de Javascript. Para los usuarios que quieren bloquear todo Javascript, NoScript es recomendado.",
"message": "Esta extensión se puede combinar con otras extensiones que a veces mejoran su funcionalidad. uBlock Origin, LocalCDN y jShelter son útiles para acelerar la carga de página, bloquear anuncios y limitar el poder de Javascript. Para los usuarios que quieren bloquear todo Javascript, NoScript es recomendado."
},
"onboardingContentFour": {
"description": "I2P es capaz de usar aplicaciones entre pares como BitTorrent, protegiendo su identidad cuando comparte archivos. Nuestro cliente de bittorrent anónimo está disponible en el navegador.",
"message": "I2P es capaz de usar aplicaciones entre pares como BitTorrent, protegiendo su identidad cuando comparte archivos. Nuestro cliente de bittorrent anónimo está disponible en el navegador."
},
"onboardingContentOne": {
"description": "Esta extensión funciona automáticamente cuando está navegando por sitios I2P. Si desea utilizar I2P como un proxy a sitios no I2P, utilice el botón I2P En el Browsing privado en la barra de herramientas y haga clic en Nueva pestaña de navegador I2P para cambiar a I2P Browsing en una nueva pestaña. Su experiencia mientras navega por Internet puede ser un poco diferente. Las cosas pueden ser un poco más lentas, y dependiendo de su nivel de seguridad, algunos elementos pueden no funcionar o cargar. También se le puede pedir que demuestre que usted es un humano y no un robot.",
"message": "Esta extensión funciona automáticamente cuando está navegando por sitios I2P. Si desea utilizar I2P como un proxy a sitios no I2P, utilice el botón I2P En el Browsing privado en la barra de herramientas y haga clic en Nueva pestaña de navegador I2P para cambiar a I2P Browsing en una nueva pestaña. Su experiencia mientras navega por Internet puede ser un poco diferente. Las cosas pueden ser un poco más lentas, y dependiendo de su nivel de seguridad, algunos elementos pueden no funcionar o cargar. También se le puede pedir que demuestre que usted es un humano y no un robot."
},
"onboardingContentThree": {
"description": "También hay un servicio de correo electrónico anónimo disponible dentro de I2P, que es accesible desde nuestro navegador a través del menú directamente a la derecha.",
"message": "También hay un servicio de correo electrónico anónimo disponible dentro de I2P, que es accesible desde nuestro navegador a través del menú directamente a la derecha."
},
"onboardingContentTwo": {
"description": "I2P se administra normalmente a través de un WebUI (La \"Consola de red\", que el usuario a veces ve en el mismo navegador que utilizan para visitar sitios remotos. Es esencial evitar que los sitios puedan acceder a la información de este WebUI y otros servicios de gestión local. Los sitios de Clearnet permanecen en el contenedor predeterminado Firefox, pero tan pronto como el contenedor predeterminado Firefox solicite un sitio *.onion o *.i2p, será inmediatamente containerizzato. La herramienta de gestión de la identidad de Tor Browser controla las pestañas de las redes claras, y son proxidas utilizando el plugin predeterminado I2P outproxy o outproxy.",
"message": "I2P se administra normalmente a través de un WebUI (La \"Consola de Router\", que el usuario a veces ve en el mismo navegador que utilizan para visitar sitios remotos. Es esencial evitar que los sitios puedan acceder a la información de este WebUI y otros servicios de gestión local. Los sitios de Clearnet permanecen en el contenedor predeterminado Firefox, pero tan pronto como el contenedor predeterminado Firefox solicite un sitio *.onion o *.i2p, será inmediatamente containerizzato. La herramienta de gestión de la identidad de Tor Browser controla las pestañas de las redes claras, y son proxidas utilizando el plugin predeterminado I2P outproxy o outproxy."
},
"onboardingContentZero": {
"description": "Al utilizar I2P In Private Browsing Mode, usted está protegido contra el seguimiento y la vigilancia. El navegador I2P aísla las cookies y elimina la historia de su navegador después de su sesión. Estas modificaciones aseguran que su privacidad y seguridad estén protegidos como su navegación.",
"message": "Al utilizar I2P In Private Browsing Mode, usted está protegido contra el seguimiento y la vigilancia. El navegador I2P aísla las cookies y elimina la historia de su navegador después de su sesión. Estas modificaciones aseguran que su privacidad y seguridad estén protegidos como su navegación."
},
"onboardingFive": {
"description": "Consejos de experiencia",
"message": "Consejos de experiencia"
},
"onboardingFour": {
"description": "Browsing the Web",
"message": "Browsing the Web"
},
"onboardingOne": {
"description": "Configure su Experiencia",
"message": "Configure su Experiencia"
},
"onboardingThree": {
"description": "Correo electrónico oculto",
"message": "Correo electrónico oculto"
},
"onboardingTitle": {
"description": "Acerca de I2P en la navegación privada",
"message": "Acerca de I2P en la navegación privada"
},
"onboardingTwo": {
"description": "Compartir archivos",
"message": "Compartir archivos"
},
"onboardingZero": {
"description": "Protege tu privacidad",
"message": "Protege tu privacidad"
},
"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"
},
"proxy-check": {
"description": "Proxy está listo.",
"message": "Proxy está listo."
},
"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"
},
"readyness": {
"description": "Proxy está listo.",
"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"
},
"returnhome": {
"description": "/",
"message": "/"
},
"router-net-bw-inbound-15s": {
"description": "Reemplazar con Router ancho de banda 15",
"message": "Reemplazar con Router ancho de banda 15"
},
"router-net-bw-inbound-1s": {
"description": "Reemplazar con el ancho de banda de router 1s",
"message": "Reemplazar con el ancho de banda de router 1s"
},
"router-net-bw-outbound-15s": {
"description": "Reemplazar con Router ancho de banda 15",
"message": "Reemplazar con Router ancho de banda 15"
},
"router-net-bw-outbound-1s": {
"description": "Reemplazar con Router ancho de banda 1",
"message": "Reemplazar con Router ancho de banda 1"
},
"router-net-tunnels-participating": {
"description": "Reemplazar con el Conde de túnel participante de Router",
"message": "Reemplazar con el Conde de túnel participante de Router"
},
"router-netdb-activepeers": {
"description": "Reemplazar con los Peers Activos Router",
"message": "Reemplazar con los Peers Activos Router"
},
"router-netdb-fastpeers": {
"description": "Reemplazar con los Peers Rápidas Router",
"message": "Reemplazar con los Peers Rápidas Router"
},
"router-netdb-highcapacitypeers": {
"description": "Sustitúyase por los trabajadores de alta capacidad",
"message": "Sustitúyase por los trabajadores de alta capacidad"
},
"router-netdb-isreseeding": {
"description": "Sustitúyase por Router netDB Estado de repaso",
"message": "Sustitúyase por Router netDB Estado de repaso"
},
"router-netdb-knownpeers": {
"description": "Reemplazar con los Peers Conocidos Router",
"message": "Reemplazar con los Peers Conocidos Router"
},
"router-restart": {
"description": "Router de reiniciar",
"message": "Router de reiniciar"
},
"router-shutdown": {
"description": "Router de apagado elegante",
"message": "Router de apagado elegante"
},
"router-status": {
"description": "Sustitúyase por Router Status",
"message": "Sustitúyase por Router Status"
},
"router-uptime": {
"description": "Reemplazar con Router Uptime",
"message": "Reemplazar con Router Uptime"
},
"router-version": {
"description": "Reemplazar con la versión Router",
"message": "Reemplazar con la versión Router"
},
"routerConsole": {
"description": "Descripción para la consola del router.",
"message": "Acceda a su consola de router I2P y a su gama completa de aplicaciones y configuraciones."
},
"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)"
},
"rpcHelpText": {
"description": "Configura tus opciones de I2PControl aquí. Configure sus opciones Bittorrent aquí.",
"message": "Configura tus opciones de I2PControl aquí. Configure sus opciones Bittorrent aquí."
},
"rpcHostText": {
"description": "Puerto de control:",
"message": "Puerto de control:"
},
"rpcPassText": {
"description": "Contraseña de control: Torrent RPC Contraseña:",
"message": "Contraseña de control: Torrent RPC Contraseña:"
},
"rpcPathText": {
"description": "Sendero de control:",
"message": "Sendero de control:"
},
"rpcPortText": {
"description": "Control Host:",
"message": "Control Host:"
},
"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."
},
"signingcert": {
"description": "Firmada por:",
"message": "Firmada por:"
},
"siteLabel": {
"description": "Etiquetas para el sitio i2p info",
"message": "Address/Site Information:"
},
"sitecert": {
"description": "Información del certificado:",
"message": "Información del certificado:"
},
"snark": {
"description": "Descripción para Bittorrent",
"message": "Quick access to Snark, the Peer-to-peer I2P network specific file sharing application."
},
"sourcehead": {
"description": "Obtener el código fuente:",
"message": "Obtener el código fuente:"
},
"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": "Acceso rápido al cliente de correo electrónico de red SusiMail I2P."
},
"text-section-header": {
"description": "El navegador de Internet invisible",
"message": "El navegador de Internet invisible"
},
"text-section-proxyerr-header": {
"description": "Un error proxy ha corrido",
"message": "Un error proxy ha corrido"
},
"text-section-torrents-header": {
"description": "Descarga Torrent",
"message": "Descarga Torrent"
},
"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)"
},
"toopie": {
"description": "Para obtener información sobre su estado de router I2P, vaya aquí:",
"message": "Para obtener información sobre su estado de router I2P, vaya aquí:"
},
"toopieHtmlHeadline": {
"description": "I2P Router Information",
"message": "I2P Router Information"
},
"toopieName": {
"description": "Nombre de la barra lateral.",
"message": "también. html"
},
"toopieTLS": {
"description": "Nombre del panel de seguridad.",
"message": "Propiedades del sitio"
},
"topbar": {
"description": "Descargar",
"message": "Descargar"
},
"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)"
},
"torrent-action": {
"description": "Descargar",
"message": "Descargar"
},
"torrentControls": {
"description": "Controles Torrent",
"message": "Controles Torrent"
},
"torrentDownloads": {
"description": "Descarga Torrent",
"message": "Descarga Torrent"
},
"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)"
},
"torrentui-opener": {
"description": "Open WebUI",
"message": "Open WebUI"
},
"visit-irc": {
"description": "Visit IRC",
"message": "Visit IRC"
},
"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)"
},
"webpage": {
"description": "Aquí hay más información.",
"message": "Aquí hay más información."
},
"window-visit-console": {
"description": "I2P Router Console",
"message": "I2P Router Console"
},
"window-visit-help": {
"description": "Extension Help Page",
"message": "Extension Help Page"
},
"window-visit-homepage": {
"description": "El navegador de Internet invisible",
"message": "El navegador de Internet invisible"
},
"window-visit-i2p": {
"description": "I2P Project Homepage:",
"message": "I2P Project Homepage:"
},
"window-visit-i2ptunnel": {
"description": "Hidden Services Manager",
"message": "Hidden Services Manager"
},
"window-visit-index": {
"description": "Webextension Homepage:",
"message": "Webextension Homepage:"
},
"window-visit-releases": {
"description": "Comunicados:",
"message": "Comunicados:"
},
"window-visit-router": {
"description": "Router Console",
"message": "Router Console"
},
"window-visit-settings": {
"description": "Abra la configuración",
"message": "Abra la configuración"
},
"window-visit-snark": {
"description": "BitTorrent",
"message": "BitTorrent"
},
"window-visit-sources": {
"description": "Código fuente:",
"message": "Código fuente:"
},
"window-visit-susimail": {
"description": "E-Mail",
"message": "E-Mail"
},
"window-visit-toopie": {
"description": "Toopie",
"message": "Toopie"
},
"window-visit-torrent": {
"description": "Para asistencia, visite la página de ayuda torrent",
"message": "Para asistencia, visite la página de ayuda torrent"
},
"windowVisitConsole": {
"description": "Consola Router.",
"message": "Consola Router:"
},
"windowVisitHelppage": {
"description": "Ayuda página para la etiqueta de extensión.",
"message": "WebExtension Information:"
},
"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:"
}
}

View File

@@ -1,738 +0,0 @@
{
"CertLabel": {
"description": "Renseignements sur le certificat:",
"message": "Renseignements sur le certificat:"
},
"SignedLabel": {
"description": "Signé par:",
"message": "Signé par:"
},
"TorrentTypeLabel": {
"description": "Torrent Links:",
"message": "Torrent Links:"
},
"TypeLabel": {
"description": "Torrent Links:",
"message": "Torrent Links:"
},
"aboutconsole": {
"description": "Pour accéder à la page d'accueil de la console routeur, allez ici:",
"message": "Pour accéder à la page d'accueil de la console routeur, allez ici:"
},
"abouthome": {
"description": "Description pour la page du bouton d'extension.",
"message": "Pour plus d'informations sur cette extension, visitez cette page."
},
"addresstype": {
"description": "Type d ' adresse:",
"message": "Type d ' adresse:"
},
"applicationExplain": {
"description": "Description pour la section de demande.",
"message": "La console de routeur I2P et les applications s'ouvrent dans leur propre onglet, leur fournissant les mêmes avantages de sécurité que la navigation avec cette extension. Cela ajoute plus de protection en isolant chaque application et en empêchant d'autres onglets (c'est-à-dire les médias sociaux, etc ) de l'empreinte ou des scripts. Tous les onglets utilisent des couleurs d'identification pour suivre votre flux de travail I2P."
},
"applicationHeader": {
"description": "Header for applications section.",
"message": "Applications"
},
"beta": {
"description": "C'est un produit expérimental.",
"message": "C'est un produit expérimental."
},
"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)"
},
"bookmarksButton": {
"description": "Re-Create Signets",
"message": "Re-Create Signets"
},
"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)"
},
"browser-action": {
"description": "Parcourir",
"message": "Parcourir"
},
"btRpcHostText": {
"description": "Torrent RPC Hébergement :",
"message": "Torrent RPC Hébergement :"
},
"btRpcPathText": {
"description": "Torrent RPC Sentier :",
"message": "Torrent RPC Sentier :"
},
"btRpcPortText": {
"description": "Torrent RPC Port:",
"message": "Torrent RPC Port:"
},
"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."
},
"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"
},
"description": {
"description": "Vous pouvez maintenant utiliser I2P dans ce navigateur.",
"message": "Vous pouvez maintenant utiliser I2P dans ce navigateur."
},
"description2": {
"description": "Si vous voyez cette page, c'est parce qu'une erreur de procuration s'est produite. Certaines informations ont été fournies pour vous aider à diagnostiquer le problème.",
"message": "Si vous voyez cette page, c'est parce qu'une erreur de procuration s'est produite. Certaines informations ont été fournies pour vous aider à diagnostiquer le problème."
},
"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": "La navigation du réseau I2P est facile."
},
"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"
},
"fliplinks": {
"description": "Extension et ressources I2P",
"message": "Extension et ressources I2P"
},
"forumMessage": {
"description": "Message d'aide",
"message": "Visitez le Forum I2P pour en savoir plus ou demandez de l'aide"
},
"headline": {
"description": "Le navigateur Internet invisible",
"message": "Le navigateur Internet invisible"
},
"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 :"
},
"i2ppage": {
"description": "Plus d'informations sont disponibles ici.",
"message": "Plus d'informations sont disponibles ici."
},
"i2ptunnel": {
"description": "Description pour i2ptunnel",
"message": "Voir les messages de statut proxy et configurer les services et les tunnels."
},
"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"
},
"label-router-activepeers": {
"description": "Peers actifs:",
"message": "Peers actifs:"
},
"label-router-bandwidth": {
"description": "Bandwidth",
"message": "Bandwidth"
},
"label-router-bw-inbound-15s": {
"description": "Inbound bw 15s:",
"message": "Inbound bw 15s:"
},
"label-router-bw-inbound-1s": {
"description": "Inbound bw 1s:",
"message": "Inbound bw 1s:"
},
"label-router-bw-outbound-15s": {
"description": "Outbound bw 15s:",
"message": "Outbound bw 15s:"
},
"label-router-bw-outbound-1s": {
"description": "Bw 1s :",
"message": "Bw 1s :"
},
"label-router-net-tunnels-participating": {
"description": "Tunnels de transit:",
"message": "Tunnels de transit:"
},
"label-router-netdb-fastpeers": {
"description": "Fast Peers:",
"message": "Fast Peers:"
},
"label-router-netdb-highcapacitypeers": {
"description": "Capacité élevée Peers:",
"message": "Capacité élevée Peers:"
},
"label-router-netdb-isreseeding": {
"description": "Statut :",
"message": "Statut :"
},
"label-router-netdb-knownpeers": {
"description": "Known Peers:",
"message": "Known Peers:"
},
"label-router-peers": {
"description": "Peers",
"message": "Peers"
},
"label-router-status": {
"description": "Statut Routeur:",
"message": "Statut Routeur:"
},
"label-router-uptime": {
"description": "Temps d ' acheminement (Ms):",
"message": "Temps d ' acheminement (Ms):"
},
"label-router-version": {
"description": "Version du routeur:",
"message": "Version du routeur:"
},
"links": {
"description": "Extension et ressources I2P",
"message": "Extension et ressources I2P"
},
"linksExplain": {
"description": "Si vous voulez obtenir plus d'informations sur I2P, vous pouvez visiter ces liens.",
"message": "Si vous voulez obtenir plus d'informations sur I2P, vous pouvez visiter ces liens."
},
"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."
},
"onboardingButtonFive": {
"description": "Améliorer votre Expérience",
"message": "Améliorer votre Expérience"
},
"onboardingButtonFour": {
"description": "Partage des fichiers",
"message": "Partage de fichiers"
},
"onboardingButtonOne": {
"description": "I2P Network Browsing and Non-I2P Network Browsing",
"message": "I2P Network Browsing and Non-I2P Network Browsing"
},
"onboardingButtonThree": {
"description": "E-mail caché",
"message": "E-mail caché"
},
"onboardingButtonTwo": {
"description": "Protéger les limites du réseau",
"message": "Protéger les limites du réseau"
},
"onboardingButtonZero": {
"description": "Protégez votre confidentialité",
"message": "Protégez votre confidentialité"
},
"onboardingContentFive": {
"description": "Cette extension peut être combinée avec d'autres extensions qui améliorent parfois sa fonctionnalité. uBlock Origin, LocalCDN et jShelter sont utiles pour accélérer le chargement de page, bloquer les annonces et limiter la puissance de Javascript. Pour les utilisateurs qui veulent bloquer tout Javascript, NoScript est recommandé.",
"message": "Cette extension peut être combinée avec d'autres extensions qui améliorent parfois sa fonctionnalité. uBlock Origin, LocalCDN et jShelter sont utiles pour accélérer le chargement de page, bloquer les annonces et limiter la puissance de Javascript. Pour les utilisateurs qui veulent bloquer tout Javascript, NoScript est recommandé."
},
"onboardingContentFour": {
"description": "I2P est capable d'utiliser des applications de pairs comme BitTorrent, en protégeant votre identité lorsque vous partagez des fichiers. Notre client Bitcoin anonyme est disponible dans le navigateur.",
"message": "I2P est capable d'utiliser des applications de pairs comme BitTorrent, en protégeant votre identité lorsque vous partagez des fichiers. Notre client Bitcoin anonyme est disponible dans le navigateur."
},
"onboardingContentOne": {
"description": "Cette extension fonctionne automatiquement lorsque vous naviguez sur les sites I2P. Si vous voulez utiliser I2P comme proxy aux sites non-I2P, utilisez le bouton I2P dans la barre d'outils et cliquez sur Nouvel onglet navigateur I2P pour passer à I2P Browsing dans un nouvel onglet. Votre expérience tout en naviguant sur Internet peut être un peu différente. Les choses peuvent être un peu plus lentes, et selon votre niveau de sécurité, certains éléments peuvent ne pas fonctionner ou charger. On peut aussi vous demander de prouver que vous êtes un humain et non un robot.",
"message": "Cette extension fonctionne automatiquement lorsque vous naviguez sur les sites I2P. Si vous voulez utiliser I2P comme proxy aux sites non-I2P, utilisez le bouton I2P dans la barre d'outils et cliquez sur Nouvel onglet navigateur I2P pour passer à I2P Browsing dans un nouvel onglet. Votre expérience tout en naviguant sur Internet peut être un peu différente. Les choses peuvent être un peu plus lentes, et selon votre niveau de sécurité, certains éléments peuvent ne pas fonctionner ou charger. On peut aussi vous demander de prouver que vous êtes un humain et non un robot."
},
"onboardingContentThree": {
"description": "Il y a aussi un service d'e-mail anonyme disponible à l'intérieur de I2P, qui est accessible depuis notre navigateur via le menu directement à droite.",
"message": "Il y a aussi un service d'e-mail anonyme disponible à l'intérieur de I2P, qui est accessible depuis notre navigateur via le menu directement à droite."
},
"onboardingContentTwo": {
"description": "I2P est normalement administré via un WebUI(The \"Router Console\"), que l'utilisateur voit parfois dans le même navigateur qu'il utilise pour visiter des sites distants. Il est essentiel d'empêcher les sites d'accéder à l'information de cette interface Web et d'autres services locaux. Les sites Clearnet restent dans le conteneur par défaut firefox, mais dès que le conteneur par défaut firefox demande un site *.onion ou *.i2p, il sera instantanément containerizzato. Tor Browser's identity management tooling controls clearnet tabs, and they are proxied using the default I2P outproxy or outproxy plugin.",
"message": "I2P est normalement administré via un WebUI(The \" Router Console \"), que l'utilisateur voit parfois dans le même navigateur qu'il utilise pour visiter des sites distants. Il est essentiel d'empêcher les sites d'accéder à l'information de cette interface Web et d'autres services locaux. Les sites Clearnet restent dans le conteneur par défaut firefox, mais dès que le conteneur par défaut firefox demande un site *.onion ou *.i2p, il sera instantanément containerizzato. Tor Browser's identity management tooling controls clearnet tabs, and they are proxied using the default I2P outproxy or outproxy plugin."
},
"onboardingContentZero": {
"description": "Lorsque vous utilisez I2P En mode de navigation privée, vous êtes protégé contre le suivi et la surveillance. Le navigateur I2P isole les cookies et supprime l'historique de votre navigateur après votre session. Ces modifications assurent la protection de votre vie privée et de votre sécurité.",
"message": "Lorsque vous utilisez I2P En mode de navigation privée, vous êtes protégé contre le suivi et la surveillance. Le navigateur I2P isole les cookies et supprime l'historique de votre navigateur après votre session. Ces modifications assurent la protection de votre vie privée et de votre sécurité."
},
"onboardingFive": {
"description": "Conseils d'expérience",
"message": "Conseils d'expérience"
},
"onboardingFour": {
"description": "Browsing the Web",
"message": "Browsing the Web"
},
"onboardingOne": {
"description": "Configurez votre Expérience",
"message": "Configurez votre Expérience"
},
"onboardingThree": {
"description": "E-mail caché",
"message": "E-mail caché"
},
"onboardingTitle": {
"description": "À propos d'I2P dans la foule privée",
"message": "À propos d'I2P dans la foule privée"
},
"onboardingTwo": {
"description": "Partager Fichiers",
"message": "Partager Fichiers"
},
"onboardingZero": {
"description": "Protégez votre confidentialité",
"message": "Protégez votre confidentialité"
},
"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"
},
"proxy-check": {
"description": "Proxy est prêt.",
"message": "Proxy est prêt."
},
"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"
},
"readyness": {
"description": "Proxy est prêt.",
"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"
},
"returnhome": {
"description": "/",
"message": "/"
},
"router-net-bw-inbound-15s": {
"description": "Remplacer par Router Bandwidth Outbound 15s",
"message": "Remplacer par Router Bandwidth Outbound 15s"
},
"router-net-bw-inbound-1s": {
"description": "Remplacer par Router Bandwidth Inbound 1s",
"message": "Remplacer par Router Bandwidth Inbound 1s"
},
"router-net-bw-outbound-15s": {
"description": "Remplacer par Router Bandwidth Outbound 15s",
"message": "Remplacer par Router Bandwidth Outbound 15s"
},
"router-net-bw-outbound-1s": {
"description": "Remplacer par Router Bandwidth Outbound 1s",
"message": "Remplacer par Router Bandwidth Outbound 1s"
},
"router-net-tunnels-participating": {
"description": "Remplacer par le nombre de tunnels participants du routeur",
"message": "Remplacer par le nombre de tunnels participants du routeur"
},
"router-netdb-activepeers": {
"description": "Remplacer par Router Active Peers",
"message": "Remplacer par Router Active Peers"
},
"router-netdb-fastpeers": {
"description": "Remplacer par Router Fast Peers",
"message": "Remplacer par Router Fast Peers"
},
"router-netdb-highcapacitypeers": {
"description": "Remplacer par des Peers de haute capacité",
"message": "Remplacer par des Peers de haute capacité"
},
"router-netdb-isreseeding": {
"description": "Remplacer par Router netDB Reseeding Status",
"message": "Remplacer par Router netDB Reseeding Status"
},
"router-netdb-knownpeers": {
"description": "Remplacer par Router Known Peers",
"message": "Remplacer par Router Known Peers"
},
"router-restart": {
"description": "Bien redémarrer routeur",
"message": "Bien redémarrer routeur"
},
"router-shutdown": {
"description": "Routeur d'arrêt Gracely",
"message": "Routeur d'arrêt Gracely"
},
"router-status": {
"description": "Remplacer par le statut Routeur",
"message": "Remplacer par le statut Routeur"
},
"router-uptime": {
"description": "Remplacer par Router Uptime",
"message": "Remplacer par Router Uptime"
},
"router-version": {
"description": "Remplacer par la version Router",
"message": "Remplacer par la version Router"
},
"routerConsole": {
"description": "Description pour la console routeur.",
"message": "Accédez à votre console de routeur I2P et à toute sa gamme d'applications et de configurations."
},
"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)"
},
"rpcHelpText": {
"description": "Configurez vos options I2PControl ici. Configurez vos options Bittorrent ici.",
"message": "Configurez vos options I2PControl ici. Configurez vos options Bittorrent ici."
},
"rpcHostText": {
"description": "Port de contrôle:",
"message": "Port de contrôle:"
},
"rpcPassText": {
"description": "Mot de passe de contrôle: Torrent RPC Mot de passe :",
"message": "Mot de passe de contrôle: Torrent RPC Mot de passe :"
},
"rpcPathText": {
"description": "Voie de contrôle:",
"message": "Voie de contrôle:"
},
"rpcPortText": {
"description": "Hostie de contrôle:",
"message": "Hostie de contrôle:"
},
"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."
},
"signingcert": {
"description": "Signé par:",
"message": "Signé par:"
},
"siteLabel": {
"description": "Étiquette pour info site i2p",
"message": "Adresse/Site Information:"
},
"sitecert": {
"description": "Renseignements sur le certificat:",
"message": "Renseignements sur le certificat:"
},
"snark": {
"description": "Description pour Bittorrent",
"message": "Accès rapide à Snark, l'application de partage de fichiers I2P par réseau Peer-to-peer."
},
"sourcehead": {
"description": "Obtenez le code source:",
"message": "Obtenez le code source:"
},
"sources": {
"description": "Description du lien de code source",
"message": "Parcourez le code source ici"
},
"susimail": {
"description": "Description pour e-mail",
"message": "Accès rapide au client de messagerie réseau SusiMail I2P."
},
"text-section-header": {
"description": "Le navigateur Internet invisible",
"message": "Le navigateur Internet invisible"
},
"text-section-proxyerr-header": {
"description": "A Proxy Error has Occurred",
"message": "A Proxy Error has Occurred"
},
"text-section-torrents-header": {
"description": "Téléchargements de Torrent",
"message": "Téléchargements de Torrent"
},
"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)"
},
"toopie": {
"description": "Pour des informations sur votre statut de routeur I2P, allez ici:",
"message": "Pour des informations sur votre statut de routeur I2P, allez ici:"
},
"toopieHtmlHeadline": {
"description": "I2P Router Information",
"message": "I2P Router Information"
},
"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"
},
"topbar": {
"description": "Parcourir",
"message": "Parcourir"
},
"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)"
},
"torrent-action": {
"description": "Télécharger",
"message": "Télécharger"
},
"torrentControls": {
"description": "Torrent Controls",
"message": "Torrent Controls"
},
"torrentDownloads": {
"description": "Téléchargements de Torrent",
"message": "Téléchargements de Torrent"
},
"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)"
},
"torrentui-opener": {
"description": "Open WebUI",
"message": "Open WebUI"
},
"visit-irc": {
"description": "Visiter IRC",
"message": "Visiter IRC"
},
"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)"
},
"webpage": {
"description": "Plus d'informations sont disponibles ici.",
"message": "Plus d'informations sont disponibles ici."
},
"window-visit-console": {
"description": "Console Routeur I2P",
"message": "Console Routeur I2P"
},
"window-visit-help": {
"description": "Extension Page",
"message": "Extension Page"
},
"window-visit-homepage": {
"description": "Le navigateur Internet invisible",
"message": "Le navigateur Internet invisible"
},
"window-visit-i2p": {
"description": "I2P Page d'accueil du projet :",
"message": "I2P Page d'accueil du projet :"
},
"window-visit-i2ptunnel": {
"description": "Hidden Services Manager",
"message": "Hidden Services Manager"
},
"window-visit-index": {
"description": "Webextension Homepage:",
"message": "Webextension Homepage:"
},
"window-visit-releases": {
"description": "Sorties:",
"message": "Sorties:"
},
"window-visit-router": {
"description": "Router Console",
"message": "Router Console"
},
"window-visit-settings": {
"description": "Ouvrez les paramètres",
"message": "Ouvrez les paramètres"
},
"window-visit-snark": {
"description": "BitTorrent",
"message": "BitTorrent"
},
"window-visit-sources": {
"description": "Code source:",
"message": "Code source:"
},
"window-visit-susimail": {
"description": "E-Mail",
"message": "E-Mail"
},
"window-visit-toopie": {
"description": "Toopie",
"message": "Toopie"
},
"window-visit-torrent": {
"description": "Pour l'assistance, visitez la page d'aide du torrent",
"message": "Pour l'assistance, visitez la page d'aide du torrent"
},
"windowVisitConsole": {
"description": "Router Console label.",
"message": "Router Console:"
},
"windowVisitHelppage": {
"description": "Page d'aide pour l'étiquette d'extension.",
"message": "WebExtension Information:"
},
"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:"
}
}

View File

@@ -1,738 +0,0 @@
{
"CertLabel": {
"description": "Informazioni sul certificato:",
"message": "Informazioni sul certificato:"
},
"SignedLabel": {
"description": "Firmato da:",
"message": "Firmato da:"
},
"TorrentTypeLabel": {
"description": "Collegamenti Torrent:",
"message": "Collegamenti Torrent:"
},
"TypeLabel": {
"description": "Collegamenti Torrent:",
"message": "Collegamenti Torrent:"
},
"aboutconsole": {
"description": "Per accedere alla homepage della console router, vai qui:",
"message": "Per accedere alla homepage della console router, vai qui:"
},
"abouthome": {
"description": "Descrizione per la pagina del pulsante estensione.",
"message": "Per maggiori informazioni su questa estensione, visita questa pagina."
},
"addresstype": {
"description": "Indirizzo Tipo:",
"message": "Indirizzo Tipo:"
},
"applicationExplain": {
"description": "Descrizione per sezione applicazione.",
"message": "La console router I2P e le applicazioni si aprono nella propria scheda, fornendo loro gli stessi vantaggi di sicurezza come la navigazione con questa estensione. Questo aggiunge più protezione isolando ogni applicazione e impedendo altre schede (cioè i social media, ecc ) da impronta digitale o script. Tutte le schede utilizzano l'identificazione dei colori per tenere traccia del flusso di lavoro I2P."
},
"applicationHeader": {
"description": "Intestazione per la sezione applicazioni.",
"message": "Applicazioni"
},
"beta": {
"description": "Questo è un prodotto sperimentale.",
"message": "Questo è un prodotto sperimentale."
},
"blogPreface": {
"description": "Prefazione per la barra del browser",
"message": "Blog"
},
"blogPrefacePrivate": {
"description": "Prefazione per la barra del browser",
"message": "Blog (Private)"
},
"bookmarksButton": {
"description": "Segnalibri di recupero",
"message": "Segnalibri di recupero"
},
"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)"
},
"browser-action": {
"description": "Sfoglia",
"message": "Sfoglia"
},
"btRpcHostText": {
"description": "Torrent RPC Host:",
"message": "Torrent RPC Host:"
},
"btRpcPathText": {
"description": "Torrent RPC Percorso:",
"message": "Torrent RPC Percorso:"
},
"btRpcPortText": {
"description": "Torrent RPC Porto:",
"message": "Torrent RPC Porto:"
},
"certAbsent": {
"description": "Contenuto per informazioni sul certificato se assente",
"message": "Questo sito non utilizza HTTPS. È ancora verificata crittograficamente da I2P."
},
"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"
},
"description": {
"description": "Ora è possibile utilizzare I2P in questo browser.",
"message": "Ora è possibile utilizzare I2P in questo browser."
},
"description2": {
"description": "Se stai vedendo questa pagina, è perché si è verificato un errore proxy. Alcune informazioni sono state fornite per aiutarvi a diagnosticare il problema.",
"message": "Se stai vedendo questa pagina, è perché si è verificato un errore proxy. Alcune informazioni sono state fornite per aiutarvi a diagnosticare il problema."
},
"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": "La navigazione della rete I2P è stata facile."
},
"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"
},
"fliplinks": {
"description": "Estensione e risorse I2P",
"message": "Estensione e risorse I2P"
},
"forumMessage": {
"description": "Messaggio di aiuto",
"message": "Visita il Forum I2P per saperne di più o chiedere assistenza"
},
"headline": {
"description": "Il browser Internet invisibile",
"message": "Il browser Internet invisibile"
},
"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:"
},
"i2ppage": {
"description": "Ulteriori informazioni sono disponibili qui.",
"message": "Ulteriori informazioni sono disponibili qui."
},
"i2ptunnel": {
"description": "Descrizione per i2ptunnel",
"message": "Visualizza i messaggi di stato del proxy e configura i servizi e i tunnel."
},
"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"
},
"label-router-activepeers": {
"description": "Pari attivi:",
"message": "Pari attivi:"
},
"label-router-bandwidth": {
"description": "Larghezza di banda",
"message": "Larghezza di banda"
},
"label-router-bw-inbound-15s": {
"description": "Inbound bw 15s:",
"message": "Inbound bw 15s:"
},
"label-router-bw-inbound-1s": {
"description": "Inbound bw 1s:",
"message": "Inbound bw 1s:"
},
"label-router-bw-outbound-15s": {
"description": "In uscita bw 15s:",
"message": "In uscita bw 15s:"
},
"label-router-bw-outbound-1s": {
"description": "In uscita bw 1s:",
"message": "In uscita bw 1s:"
},
"label-router-net-tunnels-participating": {
"description": "Tunnel di transito:",
"message": "Tunnel di transito:"
},
"label-router-netdb-fastpeers": {
"description": "Fast Peers:",
"message": "Fast Peers:"
},
"label-router-netdb-highcapacitypeers": {
"description": "Alta capacità Pari:",
"message": "Alta capacità Pari:"
},
"label-router-netdb-isreseeding": {
"description": "Stato di recupero:",
"message": "Stato di recupero:"
},
"label-router-netdb-knownpeers": {
"description": "Pari conosciuti:",
"message": "Pari conosciuti:"
},
"label-router-peers": {
"description": "Pari",
"message": "Pari"
},
"label-router-status": {
"description": "Status Router Status:",
"message": "Status Router Status:"
},
"label-router-uptime": {
"description": "Router Uptime(Ms):",
"message": "Router Uptime(Ms):"
},
"label-router-version": {
"description": "Versione Router:",
"message": "Versione Router:"
},
"links": {
"description": "Estensione e risorse I2P",
"message": "Estensione e risorse I2P"
},
"linksExplain": {
"description": "Se si desidera ottenere maggiori informazioni su I2P, è possibile visitare questi link.",
"message": "Se si desidera ottenere maggiori informazioni su I2P, è possibile visitare questi link."
},
"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."
},
"onboardingButtonFive": {
"description": "Migliorare il tuo Esperienza",
"message": "Migliorare il tuo Esperienza"
},
"onboardingButtonFour": {
"description": "Condivisione dei file",
"message": "Condivisione dei file"
},
"onboardingButtonOne": {
"description": "Navigazione di rete I2P e navigazione di rete non I2P",
"message": "Navigazione di rete I2P e navigazione di rete non I2P"
},
"onboardingButtonThree": {
"description": "E-mail nascosta",
"message": "E-mail nascosta"
},
"onboardingButtonTwo": {
"description": "Protezione dei rimbalzi di rete",
"message": "Protezione dei rimbalzi di rete"
},
"onboardingButtonZero": {
"description": "Proteggi la tua privacy",
"message": "Proteggi la tua privacy"
},
"onboardingContentFive": {
"description": "Questa estensione può essere combinata con altre estensioni che a volte migliorano la sua funzionalità. uBlock Origin, LocalCDN e jShelter sono utili per accelerare il caricamento della pagina, bloccare gli annunci e limitare la potenza di Javascript. Per gli utenti che vogliono bloccare tutti i Javascript, NoScript è raccomandato.",
"message": "Questa estensione può essere combinata con altre estensioni che a volte migliorano la sua funzionalità. uBlock Origin, LocalCDN e jShelter sono utili per accelerare il caricamento della pagina, bloccare gli annunci e limitare la potenza di Javascript. Per gli utenti che vogliono bloccare tutti i Javascript, NoScript è raccomandato."
},
"onboardingContentFour": {
"description": "I2P è in grado di utilizzare applicazioni peer-to-peer come BitTorrent, proteggendo la tua identità quando condividi i file. Il nostro client bittorrent anonimo è disponibile nel browser.",
"message": "I2P è in grado di utilizzare applicazioni peer-to-peer come BitTorrent, proteggendo la tua identità quando condividi i file. Il nostro client bittorrent anonimo è disponibile nel browser."
},
"onboardingContentOne": {
"description": "Questa estensione funziona automaticamente durante la navigazione nei siti I2P. Se si desidera utilizzare I2P come proxy per i siti non I2P, utilizzare il pulsante I2P In Private Browsing nella barra degli strumenti e fare clic su Nuova scheda Browser I2P per passare alla navigazione I2P in una nuova scheda. La tua esperienza durante la navigazione in internet può essere un po 'diverso. Le cose possono essere un po 'più lente, e a seconda del livello di sicurezza, alcuni elementi potrebbero non funzionare o caricare. Si può anche essere chiesto di dimostrare di essere un umano e non un robot.",
"message": "Questa estensione funziona automaticamente durante la navigazione nei siti I2P. Se si desidera utilizzare I2P come proxy per i siti non I2P, utilizzare il pulsante I2P In Private Browsing nella barra degli strumenti e fare clic su Nuova scheda Browser I2P per passare alla navigazione I2P in una nuova scheda. La tua esperienza durante la navigazione in internet può essere un po 'diverso. Le cose possono essere un po 'più lente, e a seconda del livello di sicurezza, alcuni elementi potrebbero non funzionare o caricare. Si può anche essere chiesto di dimostrare di essere un umano e non un robot."
},
"onboardingContentThree": {
"description": "C'è anche un servizio di posta elettronica anonimo disponibile all'interno di I2P, che è accessibile dal nostro browser tramite il menu direttamente a destra.",
"message": "C'è anche un servizio di posta elettronica anonimo disponibile all'interno di I2P, che è accessibile dal nostro browser tramite il menu direttamente a destra."
},
"onboardingContentTwo": {
"description": "I2P viene normalmente somministrato tramite un WebUI (The \"Router Console \"), che l'utente a volte vede nello stesso browser utilizzato per visitare siti remoti. E 'essenziale per impedire ai siti di essere in grado di accedere alle informazioni da questo WebUI e altri servizi localmente in esecuzione. I siti Clearnet rimangono nel contenitore firefox-default, ma non appena il contenitore firefox-default richiede un sito *.onion o *.i2p, sarà immediatamente containerizzato. La gestione dell'identità di Tor Browser controlla le schede Clearnet, e sono proxied utilizzando il plugin predefinito I2P outproxy o outproxy.",
"message": "I2P viene normalmente somministrato tramite un WebUI (The \" Router Console \"), che l'utente a volte vede nello stesso browser utilizzato per visitare siti remoti. E 'essenziale per impedire ai siti di essere in grado di accedere alle informazioni da questo WebUI e altri servizi localmente in esecuzione. I siti Clearnet rimangono nel contenitore firefox-default, ma non appena il contenitore firefox-default richiede un sito *.onion o *.i2p, sarà immediatamente containerizzato. La gestione dell'identità di Tor Browser controlla le schede Clearnet, e sono proxied utilizzando il plugin predefinito I2P outproxy o outproxy."
},
"onboardingContentZero": {
"description": "Quando si utilizza I2P In modalità navigazione privata, si è protetti contro il monitoraggio e la sorveglianza. Il browser I2P isola i cookie e cancella la cronologia del browser dopo la sessione. Queste modifiche assicurano che la vostra privacy e sicurezza siano protette come vostra navigazione.",
"message": "Quando si utilizza I2P In modalità navigazione privata, si è protetti contro il monitoraggio e la sorveglianza. Il browser I2P isola i cookie e cancella la cronologia del browser dopo la sessione. Queste modifiche assicurano che la vostra privacy e sicurezza siano protette come vostra navigazione."
},
"onboardingFive": {
"description": "Consigli sull'esperienza",
"message": "Consigli sull'esperienza"
},
"onboardingFour": {
"description": "Navigare sul Web",
"message": "Navigare sul Web"
},
"onboardingOne": {
"description": "Configurare il Esperienza",
"message": "Configurare il Esperienza"
},
"onboardingThree": {
"description": "E-mail nascosta",
"message": "E-mail nascosta"
},
"onboardingTitle": {
"description": "Informazioni su I2P In Private Browsing",
"message": "Informazioni su I2P In Private Browsing"
},
"onboardingTwo": {
"description": "Condividi i file",
"message": "Condividi i file"
},
"onboardingZero": {
"description": "Proteggi la tua privacy",
"message": "Proteggi la tua privacy"
},
"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"
},
"proxy-check": {
"description": "Il proxy è pronto.",
"message": "Il proxy è pronto."
},
"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"
},
"readyness": {
"description": "Il proxy è pronto.",
"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"
},
"returnhome": {
"description": "/",
"message": "/"
},
"router-net-bw-inbound-15s": {
"description": "Sostituire con Router Bandwidth Outbound 15s",
"message": "Sostituire con Router Bandwidth Outbound 15s"
},
"router-net-bw-inbound-1s": {
"description": "Sostituire con Router Bandwidth Inbound 1s",
"message": "Sostituire con Router Bandwidth Inbound 1s"
},
"router-net-bw-outbound-15s": {
"description": "Sostituire con Router Bandwidth Outbound 15s",
"message": "Sostituire con Router Bandwidth Outbound 15s"
},
"router-net-bw-outbound-1s": {
"description": "Sostituire con Router Bandwidth Outbound 1s",
"message": "Sostituire con Router Bandwidth Outbound 1s"
},
"router-net-tunnels-participating": {
"description": "Sostituire con il conteggio Tunnel partecipante Router",
"message": "Sostituire con il conteggio Tunnel partecipante Router"
},
"router-netdb-activepeers": {
"description": "Sostituisci con Router Active Peers",
"message": "Sostituisci con Router Active Peers"
},
"router-netdb-fastpeers": {
"description": "Sostituire con Router Fast Peers",
"message": "Sostituire con Router Fast Peers"
},
"router-netdb-highcapacitypeers": {
"description": "Sostituire con i pari ad alta capacità",
"message": "Sostituire con i pari ad alta capacità"
},
"router-netdb-isreseeding": {
"description": "Sostituisci con Router netDB Reseeding Status",
"message": "Sostituisci con Router netDB Reseeding Status"
},
"router-netdb-knownpeers": {
"description": "Sostituisci con Router Known Peers",
"message": "Sostituisci con Router Known Peers"
},
"router-restart": {
"description": "Riavviare Gracely router",
"message": "Riavviare Gracely router"
},
"router-shutdown": {
"description": "Router di arresto Gracefully",
"message": "Router di arresto Gracefully"
},
"router-status": {
"description": "Sostituisci con lo stato Router",
"message": "Sostituisci con lo stato Router"
},
"router-uptime": {
"description": "Sostituire con Router Uptime",
"message": "Sostituire con Router Uptime"
},
"router-version": {
"description": "Sostituisci con la versione Router",
"message": "Sostituisci con la versione Router"
},
"routerConsole": {
"description": "Descrizione per la console router.",
"message": "Accedere alla console router I2P e alla sua gamma completa di applicazioni e configurazioni."
},
"routerPreface": {
"description": "Prefazione per la barra del browser",
"message": "Router Console"
},
"routerPrefacePrivate": {
"description": "Prefazione per la barra del browser",
"message": "Router Console (Private)"
},
"rpcHelpText": {
"description": "Configura le opzioni I2PControl qui. Configura le opzioni Bittorrent qui.",
"message": "Configura le opzioni I2PControl qui. Configura le opzioni Bittorrent qui."
},
"rpcHostText": {
"description": "Porto di controllo:",
"message": "Porto di controllo:"
},
"rpcPassText": {
"description": "Password di controllo: Torrent RPC Password:",
"message": "Password di controllo: Torrent RPC Password:"
},
"rpcPathText": {
"description": "Percorso di controllo:",
"message": "Percorso di controllo:"
},
"rpcPortText": {
"description": "Host di controllo:",
"message": "Host di controllo:"
},
"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."
},
"signingcert": {
"description": "Firmato da:",
"message": "Firmato da:"
},
"siteLabel": {
"description": "Etichetta per i2p sito info",
"message": "Indirizzo/Sito Informazioni:"
},
"sitecert": {
"description": "Informazioni sul certificato:",
"message": "Informazioni sul certificato:"
},
"snark": {
"description": "Descrizione per Bittorrent",
"message": "Accesso rapido a Snark, l'applicazione di condivisione di file di rete I2P Peer-to-peer."
},
"sourcehead": {
"description": "Ottieni il codice sorgente:",
"message": "Ottieni il codice sorgente:"
},
"sources": {
"description": "Descrizione per il collegamento codice sorgente",
"message": "Sfoglia il codice sorgente qui"
},
"susimail": {
"description": "Descrizione per e-mail",
"message": "Accesso rapido al client di posta elettronica di rete SusiMail I2P."
},
"text-section-header": {
"description": "Il browser Internet invisibile",
"message": "Il browser Internet invisibile"
},
"text-section-proxyerr-header": {
"description": "Un errore di proxy ha superato",
"message": "Un errore di proxy ha superato"
},
"text-section-torrents-header": {
"description": "Scarica Torrent",
"message": "Scarica Torrent"
},
"titlePreface": {
"description": "Prefazione per la barra del browser",
"message": "I2P Browser"
},
"titlePrefacePrivate": {
"description": "Prefazione per la barra del browser",
"message": "I2P Browser (Privato)"
},
"toopie": {
"description": "Per informazioni sullo stato del router I2P, vai qui:",
"message": "Per informazioni sullo stato del router I2P, vai qui:"
},
"toopieHtmlHeadline": {
"description": "Informazioni sul router I2P",
"message": "Informazioni sul router I2P"
},
"toopieName": {
"description": "Nome della barra laterale.",
"message": "anch'io. html"
},
"toopieTLS": {
"description": "Nome del pannello di sicurezza.",
"message": "Proprietà del sito"
},
"topbar": {
"description": "Sfoglia Download",
"message": "Sfoglia Download"
},
"torPreface": {
"description": "Prefazione per la barra del browser",
"message": "Tor Manager"
},
"torPrefacePrivate": {
"description": "Prefazione per la barra del browser",
"message": "Tor Manager (Private)"
},
"torrent-action": {
"description": "Scarica",
"message": "Scarica"
},
"torrentControls": {
"description": "Controllo Torrent",
"message": "Controllo Torrent"
},
"torrentDownloads": {
"description": "Scarica Torrent",
"message": "Scarica Torrent"
},
"torrentPreface": {
"description": "Prefazione per la barra del browser",
"message": "Bittorrent"
},
"torrentPrefacePrivate": {
"description": "Prefazione per la barra del browser",
"message": "Bittorrent (Private)"
},
"torrentui-opener": {
"description": "Aprire WebUI",
"message": "Aprire WebUI"
},
"visit-irc": {
"description": "Visita IRC",
"message": "Visita IRC"
},
"webPreface": {
"description": "Prefazione per la barra del browser",
"message": "Browser Web"
},
"webPrefacePrivate": {
"description": "Prefazione per la barra del browser",
"message": "Web Browser (Privato)"
},
"webpage": {
"description": "Ulteriori informazioni sono disponibili qui.",
"message": "Ulteriori informazioni sono disponibili qui."
},
"window-visit-console": {
"description": "Console Router I2P",
"message": "Console Router I2P"
},
"window-visit-help": {
"description": "Pagina di aiuto di estensione",
"message": "Pagina di aiuto di estensione"
},
"window-visit-homepage": {
"description": "Il browser Internet invisibile",
"message": "Il browser Internet invisibile"
},
"window-visit-i2p": {
"description": "I2P Pagina principale del progetto:",
"message": "I2P Pagina principale del progetto:"
},
"window-visit-i2ptunnel": {
"description": "Gestione dei servizi nascosti",
"message": "Gestione dei servizi nascosti"
},
"window-visit-index": {
"description": "Webextension Homepage:",
"message": "Webextension Homepage:"
},
"window-visit-releases": {
"description": "Comunicati:",
"message": "Comunicati:"
},
"window-visit-router": {
"description": "Router Console",
"message": "Router Console"
},
"window-visit-settings": {
"description": "Aprire le impostazioni",
"message": "Aprire le impostazioni"
},
"window-visit-snark": {
"description": "BitTorrent",
"message": "BitTorrent"
},
"window-visit-sources": {
"description": "Codice sorgente:",
"message": "Codice sorgente:"
},
"window-visit-susimail": {
"description": "E-Mail",
"message": "E-Mail"
},
"window-visit-toopie": {
"description": "Toopie",
"message": "Toopie"
},
"window-visit-torrent": {
"description": "Per assistenza, visita la pagina di aiuto torrent",
"message": "Per assistenza, visita la pagina di aiuto torrent"
},
"windowVisitConsole": {
"description": "Etichetta Router Console.",
"message": "Router Console:"
},
"windowVisitHelppage": {
"description": "Pagina di aiuto per l'etichetta di estensione.",
"message": "Informazioni sul WebExtension:"
},
"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:"
}
}

View File

@@ -1,738 +0,0 @@
{
"CertLabel": {
"description": "証明書情報:",
"message": "証明書情報:"
},
"SignedLabel": {
"description": "署名:",
"message": "署名:"
},
"TorrentTypeLabel": {
"description": "トレントリンク:",
"message": "トレントリンク:"
},
"TypeLabel": {
"description": "トレントリンク:",
"message": "トレントリンク:"
},
"aboutconsole": {
"description": "ルーターコンソールのホームページにアクセスするには、以下を参照してください。",
"message": "ルーターコンソールのホームページにアクセスするには、以下を参照してください。"
},
"abouthome": {
"description": "延長ボタンページの説明。.",
"message": "この拡張機能の詳細については、このページをご覧ください。."
},
"addresstype": {
"description": "アドレス タイプ:",
"message": "アドレス タイプ:"
},
"applicationExplain": {
"description": "アプリケーションセクションの説明。.",
"message": "I2P ルータコンソールとアプリケーションは、独自のタブで開き、この拡張機能をブラウジングするのと同じセキュリティの利点を提供します。 これにより、各アプリケーションを分離し、指紋やスクリプトから他のタブ(ソーシャルメディアなど)を防ぐことで、より保護が向上します。 すべてのタブでは、I2P ワークフローを追跡するために色を特定する機能を使用します。."
},
"applicationHeader": {
"description": "アプリケーションセクションのヘッダー。.",
"message": "アプリケーション"
},
"beta": {
"description": "実験製品です。.",
"message": "実験製品です。."
},
"blogPreface": {
"description": "ブラウザのタイトルバーのPreface",
"message": "ニュース"
},
"blogPrefacePrivate": {
"description": "ブラウザのタイトルバーのPreface",
"message": "ブログ(プライベート)"
},
"bookmarksButton": {
"description": "ブックマークを再作成する",
"message": "ブックマークを再作成する"
},
"botePreface": {
"description": "ブラウザのタイトルバーのPreface",
"message": "I2P-Bote メール"
},
"botePrefacePrivate": {
"description": "ブラウザのタイトルバーのPreface",
"message": "I2P-Bote メール(プライベート)"
},
"browser-action": {
"description": "サイトマップ",
"message": "サイトマップ"
},
"btRpcHostText": {
"description": "トレント RPC ホスト:",
"message": "トレント RPC ホスト:"
},
"btRpcPathText": {
"description": "トレント RPC パス:",
"message": "トレント RPC パス:"
},
"btRpcPortText": {
"description": "トレント RPC 港:",
"message": "トレント RPC 港:"
},
"certAbsent": {
"description": "不在の場合の証明書情報のためのコンテンツ",
"message": "このサイトはHTTPSを利用していません。 I2Pによって暗号化されても検証されています。."
},
"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"
},
"description": {
"description": "このブラウザでI2Pを使うことができます。.",
"message": "このブラウザでI2Pを使うことができます。."
},
"description2": {
"description": "このページを見ていると、プロキシエラーが発生したためです。 問題の診断に役立つ情報をいくつか提供しました。.",
"message": "このページを見ていると、プロキシエラーが発生したためです。 問題の診断に役立つ情報をいくつか提供しました。."
},
"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の"
},
"fliplinks": {
"description": "エクステンションとI2Pリソース",
"message": "エクステンションとI2Pリソース"
},
"forumMessage": {
"description": "サポートメッセージ",
"message": "I2Pフォーラムにアクセスして、より多くのことを学ぶか、援助を求める"
},
"headline": {
"description": "目に見えないインターネットブラウザ",
"message": "目に見えないインターネットブラウザ"
},
"help": {
"description": "延長ボタンページの説明。.",
"message": "この拡張機能の詳細については、このページをご覧ください。."
},
"helpMessage": {
"description": "サポートメッセージ",
"message": "追加ヘルプを入手"
},
"histDesc": {
"description": "履歴アクションの説明",
"message": "I2Pタブが閉じられたときに履歴は自動的に消去されます。 あなたが行くように歴史をクリアしたい場合は、このボックスをチェックしてください。."
},
"homepage": {
"description": "詳細情報",
"message": "詳しくはこちらをご覧ください。"
},
"hostText": {
"description": "HTTP または SOCKS 5 プロキシのホスト",
"message": "ホスト:"
},
"i2ppage": {
"description": "詳しくはこちらをご覧ください。.",
"message": "詳しくはこちらをご覧ください。."
},
"i2ptunnel": {
"description": "I2ptunnelの説明",
"message": "プロキシステータスメッセージを表示し、サービスやトンネルの設定を行います。."
},
"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について ジャンプのホスト名"
},
"label-router-activepeers": {
"description": "活動的なピア:",
"message": "活動的なピア:"
},
"label-router-bandwidth": {
"description": "バンド幅",
"message": "バンド幅"
},
"label-router-bw-inbound-15s": {
"description": "インバウンドbw 15s:",
"message": "インバウンドbw 15s:"
},
"label-router-bw-inbound-1s": {
"description": "インバウンドbw 1s:",
"message": "インバウンドbw 1s:"
},
"label-router-bw-outbound-15s": {
"description": "アウトバウンドbw 15s:",
"message": "アウトバウンドbw 15s:"
},
"label-router-bw-outbound-1s": {
"description": "アウトバウンドbw 1s:",
"message": "アウトバウンドbw 1s:"
},
"label-router-net-tunnels-participating": {
"description": "トランジットトンネル:",
"message": "トランジットトンネル:"
},
"label-router-netdb-fastpeers": {
"description": "速い皮:",
"message": "速い皮:"
},
"label-router-netdb-highcapacitypeers": {
"description": "高容量 ピーラー:",
"message": "高容量 ピーラー:"
},
"label-router-netdb-isreseeding": {
"description": "残された状態:",
"message": "残された状態:"
},
"label-router-netdb-knownpeers": {
"description": "既知のピアーズ:",
"message": "既知のピアーズ:"
},
"label-router-peers": {
"description": "ピーラー",
"message": "ピーラー"
},
"label-router-status": {
"description": "状態のルーターの状態:",
"message": "状態のルーターの状態:"
},
"label-router-uptime": {
"description": "ルーターの稼働時間(Ms):",
"message": "ルーターの稼働時間(Ms):"
},
"label-router-version": {
"description": "ルーター版:",
"message": "ルーター版:"
},
"links": {
"description": "エクステンションとI2Pリソース",
"message": "エクステンションとI2Pリソース"
},
"linksExplain": {
"description": "I2Pについて詳しく知りたい方は、こちらのリンクをご覧ください。.",
"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の最新情報を知るブログです。."
},
"onboardingButtonFive": {
"description": "あなたの改善 体験プラン",
"message": "あなたの改善 体験プラン"
},
"onboardingButtonFour": {
"description": "ファイル共有",
"message": "ファイル共有"
},
"onboardingButtonOne": {
"description": "I2Pネットワークブラウジングと非I2Pネットワークブラウジング",
"message": "I2Pネットワークブラウジングと非I2Pネットワークブラウジング"
},
"onboardingButtonThree": {
"description": "隠しメール",
"message": "隠しメール"
},
"onboardingButtonTwo": {
"description": "ネットワーク境界の保護",
"message": "ネットワーク境界の保護"
},
"onboardingButtonZero": {
"description": "プライバシーを守る",
"message": "プライバシーを守る"
},
"onboardingContentFive": {
"description": "このエクステンションは他のエクステンションと組み合わせて機能を改善することができます。 uBlock の起源、ローカル CDN および jShelter は、ページの読み込みを高速化し、広告をブロックし、Javascript の電力を制限するのに便利です。 すべてのJavascriptをブロックしたい方は、NoScriptをお勧めします。.",
"message": "このエクステンションは他のエクステンションと組み合わせて機能を改善することができます。 uBlock の起源、ローカル CDN および jShelter は、ページの読み込みを高速化し、広告をブロックし、Javascript の電力を制限するのに便利です。 すべてのJavascriptをブロックしたい方は、NoScriptをお勧めします。."
},
"onboardingContentFour": {
"description": "I2Pは、BitTorrentのようなピアツーピアアプリケーションを使用して、ファイルを共有するときにあなたのアイデンティティを保護することができます。 当社の匿名bittorrentクライアントは、ブラウザでご利用いただけます。.",
"message": "I2Pは、BitTorrentのようなピアツーピアアプリケーションを使用して、ファイルを共有するときにあなたのアイデンティティを保護することができます。 当社の匿名bittorrentクライアントは、ブラウザでご利用いただけます。."
},
"onboardingContentOne": {
"description": "I2Pサイトを閲覧する際に自動的に機能します。 I2Pをプロキシとして非I2Pサイトに使用したい場合は、ツールバーのI2P In Private Browsingボタンを使用して、新しいI2Pブラウザタブをクリックして、新しいタブでI2Pブラウジングを切り替えます。 インターネットを閲覧する際の体験は若干異なります。 物事は少し遅くなり、セキュリティレベルに応じて、一部の要素は動作しません。 また、ロボットではなく、人間であることを証明するように求められます。.",
"message": "I2Pサイトを閲覧する際に自動的に機能します。 I2Pをプロキシとして非I2Pサイトに使用したい場合は、ツールバーのI2P In Private Browsingボタンを使用して、新しいI2Pブラウザタブをクリックして、新しいタブでI2Pブラウジングを切り替えます。 インターネットを閲覧する際の体験は若干異なります。 物事は少し遅くなり、セキュリティレベルに応じて、一部の要素は動作しません。 また、ロボットではなく、人間であることを証明するように求められます。."
},
"onboardingContentThree": {
"description": "また、I2Pの内側に匿名のメールサービスもあります。ブラウザから直接メニューからアクセス可能です。.",
"message": "また、I2Pの内側に匿名のメールサービスもあります。ブラウザから直接メニューからアクセス可能です。."
},
"onboardingContentTwo": {
"description": "I2Pは通常、WebUI(「Router Console」)を介して管理されます。これにより、ユーザーはリモートサイトにアクセスするために使用している同じブラウザで閲覧できます。 このWebUIや他のローカルランニングサービスから情報にアクセスできるサイトを防ぐことは不可欠です。 Clearnet サイトは firefox デフォルトコンテナに残っていますが、 firefox デフォルトコンテナが *.onion または *.i2p サイトをリクエストするとすぐにコンテナ化されます。 Tor Browser の ID 管理ツールは clearnet タブを制御し、デフォルト I2P outproxy または outproxy プラグインを使用してプロキシされます。.",
"message": "I2Pは、通常、WebUI(「ルーターコンソール」)を介して管理されます。これにより、ユーザーはリモートサイトにアクセスするために使用している同じブラウザで閲覧できます。 このWebUIや他のローカルランニングサービスから情報にアクセスできるサイトを防ぐことは不可欠です。 Clearnet サイトは firefox デフォルトコンテナに残っていますが、 firefox デフォルトコンテナが *.onion または *.i2p サイトをリクエストするとすぐにコンテナ化されます。 Tor Browser の ID 管理ツールは clearnet タブを制御し、デフォルト I2P outproxy または outproxy プラグインを使用してプロキシされます。."
},
"onboardingContentZero": {
"description": "I2Pをプライベートブラウジングモードで使用する場合、追跡と監視から保護されています。 I2Pブラウザはクッキーを分離し、セッション後にブラウザの履歴を削除します。 これらの変更により、プライバシーとセキュリティが保護されます。.",
"message": "I2Pをプライベートブラウジングモードで使用する場合、追跡と監視から保護されています。 I2Pブラウザはクッキーを分離し、セッション後にブラウザの履歴を削除します。 これらの変更により、プライバシーとセキュリティが保護されます。."
},
"onboardingFive": {
"description": "体験のヒント",
"message": "体験のヒント"
},
"onboardingFour": {
"description": "ウェブ閲覧",
"message": "ウェブ閲覧"
},
"onboardingOne": {
"description": "設定する 体験プラン",
"message": "設定する 体験プラン"
},
"onboardingThree": {
"description": "隠しメール",
"message": "隠しメール"
},
"onboardingTitle": {
"description": "I2Pについて プライベートブラウジング",
"message": "I2Pについて プライベートブラウジング"
},
"onboardingTwo": {
"description": "ファイル共有",
"message": "ファイル共有"
},
"onboardingZero": {
"description": "プライバシーを守る",
"message": "プライバシーを守る"
},
"portText": {
"description": "HTTP または SOCKS 5 プロキシのポート",
"message": "港:"
},
"protocolHandlerValue": {
"description": "マグネットプロトコルハンドラの値",
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s\u0026action=Add\u0026foo=Add+torrent"
},
"proxy-check": {
"description": "プロキシは準備が整います。.",
"message": "プロキシは準備が整います。."
},
"proxyFailedStatus": {
"description": "プロキシが失敗したステータス。.",
"message": "プロキシは準備が整っていない"
},
"proxyHelpText": {
"description": "リセットトンネルボタンのオプションを設定するのに役立ちます",
"message": "ここでは、I2P プロキシを設定します。."
},
"proxySuccessStatus": {
"description": "プロキシが失敗したステータス。.",
"message": "プロキシは準備ができています"
},
"readyness": {
"description": "プロキシは準備が整います。.",
"message": "プロキシは準備が整います。."
},
"releases": {
"description": "新しいリリースページの説明",
"message": "新規リリースはこちら"
},
"resetMessage": {
"description": "リセットトンネルボタンのメッセージ",
"message": "リセットトンネル"
},
"returnhome": {
"description": "・",
"message": "・"
},
"router-net-bw-inbound-15s": {
"description": "ルーターの帯域幅Outbound 15sと取り替えて下さい",
"message": "ルーターの帯域幅Outbound 15sと取り替えて下さい"
},
"router-net-bw-inbound-1s": {
"description": "ルーターの帯域幅のインバウンド1sと取り替えて下さい",
"message": "ルーターの帯域幅のインバウンド1sと取り替えて下さい"
},
"router-net-bw-outbound-15s": {
"description": "ルーターの帯域幅Outbound 15sと取り替えて下さい",
"message": "ルーターの帯域幅Outbound 15sと取り替えて下さい"
},
"router-net-bw-outbound-1s": {
"description": "ルーターの帯域幅Outbound 1sと取り替えて下さい",
"message": "ルーターの帯域幅Outbound 1sと取り替えて下さい"
},
"router-net-tunnels-participating": {
"description": "ルーターのParticipatingのトンネルの計算と取り替えて下さい",
"message": "ルーターのParticipatingのトンネルの計算と取り替えて下さい"
},
"router-netdb-activepeers": {
"description": "ルーターのアクティブ ピアーズと取り替えて下さい",
"message": "ルーターのアクティブ ピアーズと取り替えて下さい"
},
"router-netdb-fastpeers": {
"description": "ルーターの速いピアーズと取り替えて下さい",
"message": "ルーターの速いピアーズと取り替えて下さい"
},
"router-netdb-highcapacitypeers": {
"description": "高容量のピアーズと取り替えて下さい",
"message": "高容量のピアーズと取り替えて下さい"
},
"router-netdb-isreseeding": {
"description": "ルーターのnetDBの参照の状態と取り替えて下さい",
"message": "ルーターのnetDBの参照の状態と取り替えて下さい"
},
"router-netdb-knownpeers": {
"description": "ルーターの既知のピアーズと取り替えて下さい",
"message": "ルーターの既知のピアーズと取り替えて下さい"
},
"router-restart": {
"description": "うまくルーターを再起動",
"message": "うまくルーターを再起動"
},
"router-shutdown": {
"description": "グレースフルシャットダウンルータ",
"message": "グレースフルシャットダウンルータ"
},
"router-status": {
"description": "ルーターの状態に置換",
"message": "ルーターの状態に置換"
},
"router-uptime": {
"description": "ルーターの稼働時間と取り替えて下さい",
"message": "ルーターの稼働時間と取り替えて下さい"
},
"router-version": {
"description": "ルーター版と取り替えて下さい",
"message": "ルーター版と取り替えて下さい"
},
"routerConsole": {
"description": "ルーターコンソールの説明。.",
"message": "I2P ルータコンソールとアプリケーションと構成のフルレンジにアクセスします。."
},
"routerPreface": {
"description": "ブラウザのタイトルバーのPreface",
"message": "ルーターコンソール"
},
"routerPrefacePrivate": {
"description": "ブラウザのタイトルバーのPreface",
"message": "ルーターコンソール(プライベート)"
},
"rpcHelpText": {
"description": "ここでは、I2PControl オプションを設定します。 Bittorrentオプションをここに設定します。.",
"message": "ここでは、I2PControl オプションを設定します。 Bittorrentオプションをここに設定します。."
},
"rpcHostText": {
"description": "制御港:",
"message": "制御港:"
},
"rpcPassText": {
"description": "制御パスワード:トレントRPC パスワード:",
"message": "制御パスワード:トレントRPC パスワード:"
},
"rpcPathText": {
"description": "制御パス:",
"message": "制御パス:"
},
"rpcPortText": {
"description": "制御ホスト:",
"message": "制御ホスト:"
},
"rtcDesc": {
"description": "WebRTC アクションの説明",
"message": "WebRTC はデフォルトで無効になっていますが、それをオンにしてプロキシを称えるように強制することができます。 Snowflakeブラウザの拡張機能をご利用の場合、このオプションは無効になっており、デフォルトではWebRTCがオンになっています。."
},
"signingcert": {
"description": "署名:",
"message": "署名:"
},
"siteLabel": {
"description": "I2pサイトのラベル",
"message": "アドレス/サイト情報:"
},
"sitecert": {
"description": "証明書情報:",
"message": "証明書情報:"
},
"snark": {
"description": "Bittorrentの記述",
"message": "Snark、Peer-to-peer I2Pネットワーク固有のファイル共有アプリケーションへの迅速なアクセス。."
},
"sourcehead": {
"description": "ソースコードを取得する:",
"message": "ソースコードを取得する:"
},
"sources": {
"description": "ソースコードリンクの記述",
"message": "ソースコードを参照"
},
"susimail": {
"description": "電子メールの記述",
"message": "SusiMail I2Pネットワークメールクライアントへの迅速なアクセス."
},
"text-section-header": {
"description": "目に見えないインターネットブラウザ",
"message": "目に見えないインターネットブラウザ"
},
"text-section-proxyerr-header": {
"description": "プロキシエラーが発生した",
"message": "プロキシエラーが発生した"
},
"text-section-torrents-header": {
"description": "トレントダウンロード",
"message": "トレントダウンロード"
},
"titlePreface": {
"description": "ブラウザのタイトルバーのPreface",
"message": "I2Pブラウザ"
},
"titlePrefacePrivate": {
"description": "ブラウザのタイトルバーのPreface",
"message": "I2Pブラウザ(プライベート)"
},
"toopie": {
"description": "I2P ルーターのステータスに関する情報は、以下を参照してください。",
"message": "I2P ルーターのステータスに関する情報は、以下を参照してください。"
},
"toopieHtmlHeadline": {
"description": "I2P ルーター情報",
"message": "I2P ルーター情報"
},
"toopieName": {
"description": "サイドバーの名前。.",
"message": "お問い合わせ ツイート"
},
"toopieTLS": {
"description": "セキュリティパネルの名前。.",
"message": "サイトのプロパティ"
},
"topbar": {
"description": "ダウンロード",
"message": "ダウンロード"
},
"torPreface": {
"description": "ブラウザのタイトルバーのPreface",
"message": "トー・マネージャー"
},
"torPrefacePrivate": {
"description": "ブラウザのタイトルバーのPreface",
"message": "トー・マネージャー(プライベート)"
},
"torrent-action": {
"description": "ダウンロード",
"message": "ダウンロード"
},
"torrentControls": {
"description": "トレントコントロール",
"message": "トレントコントロール"
},
"torrentDownloads": {
"description": "トレントダウンロード",
"message": "トレントダウンロード"
},
"torrentPreface": {
"description": "ブラウザのタイトルバーのPreface",
"message": "ビットトレント"
},
"torrentPrefacePrivate": {
"description": "ブラウザのタイトルバーのPreface",
"message": "Bittorrent(プライベート)"
},
"torrentui-opener": {
"description": "WebUIを開く",
"message": "WebUIを開く"
},
"visit-irc": {
"description": "IRCにアクセス",
"message": "IRCにアクセス"
},
"webPreface": {
"description": "ブラウザのタイトルバーのPreface",
"message": "ウェブブラウザ"
},
"webPrefacePrivate": {
"description": "ブラウザのタイトルバーのPreface",
"message": "ウェブブラウザ(プライベート)"
},
"webpage": {
"description": "詳しくはこちらをご覧ください。.",
"message": "詳しくはこちらをご覧ください。."
},
"window-visit-console": {
"description": "I2P ルーターコンソール",
"message": "I2P ルーターコンソール"
},
"window-visit-help": {
"description": "拡張ヘルプページ",
"message": "拡張ヘルプページ"
},
"window-visit-homepage": {
"description": "目に見えないインターネットブラウザ",
"message": "目に見えないインターネットブラウザ"
},
"window-visit-i2p": {
"description": "I2Pについて プロジェクトのホームページ:",
"message": "I2Pについて プロジェクトのホームページ:"
},
"window-visit-i2ptunnel": {
"description": "隠されたサービスマネージャ",
"message": "隠されたサービスマネージャ"
},
"window-visit-index": {
"description": "Webex のホームページ:",
"message": "Webex のホームページ:"
},
"window-visit-releases": {
"description": "リリース:",
"message": "リリース:"
},
"window-visit-router": {
"description": "ルーターコンソール",
"message": "ルーターコンソール"
},
"window-visit-settings": {
"description": "設定を開く",
"message": "設定を開く"
},
"window-visit-snark": {
"description": "ビットトレント",
"message": "ビットトレント"
},
"window-visit-sources": {
"description": "ソースコード:",
"message": "ソースコード:"
},
"window-visit-susimail": {
"description": "Eメール",
"message": "Eメール"
},
"window-visit-toopie": {
"description": "トッピー",
"message": "トッピー"
},
"window-visit-torrent": {
"description": "援助のために、トレントヘルプページをご覧ください",
"message": "援助のために、トレントヘルプページをご覧ください"
},
"windowVisitConsole": {
"description": "ルーターコンソールラベル。.",
"message": "ルーターコンソール:"
},
"windowVisitHelppage": {
"description": "拡張ラベルのヘルプページ。.",
"message": "Web拡張情報:"
},
"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": "延長ホームページ:"
}
}

View File

@@ -1,738 +0,0 @@
{
"CertLabel": {
"description": "Informação do Certificado:",
"message": "Informação do Certificado:"
},
"SignedLabel": {
"description": "Assinado por:",
"message": "Assinado por:"
},
"TorrentTypeLabel": {
"description": "Ligações Torrent:",
"message": "Ligações Torrent:"
},
"TypeLabel": {
"description": "Ligações Torrent:",
"message": "Ligações Torrent:"
},
"aboutconsole": {
"description": "Para acessar a página inicial do console do roteador, vá aqui:",
"message": "Para acessar a página inicial do console do roteador, vá aqui:"
},
"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."
},
"addresstype": {
"description": "Tipo de endereço:",
"message": "Tipo de endereço:"
},
"applicationExplain": {
"description": "Descrição para seção de aplicação.",
"message": "O console de roteador I2P e aplicações abrem em sua própria aba, fornecendo-lhes os mesmos benefícios de segurança que navegar com esta extensão. Isso adiciona mais proteção isolando cada aplicativo e impedindo outras abas (ou seja, mídia social, etc) de impressões digitais ou scripts. Todas as abas usam cores de identificação para acompanhar seu fluxo de trabalho I2P."
},
"applicationHeader": {
"description": "Cabeçalho para seção de aplicações.",
"message": "Aplicações"
},
"beta": {
"description": "Este é um produto experimental.",
"message": "Este é um produto experimental."
},
"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)"
},
"bookmarksButton": {
"description": "Marcas de referência",
"message": "Marcas de referência"
},
"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)"
},
"browser-action": {
"description": "Navegar",
"message": "Navegar"
},
"btRpcHostText": {
"description": "Torrent RPC Anfitrião:",
"message": "Torrent RPC Anfitrião:"
},
"btRpcPathText": {
"description": "Torrent RPC Caminho:",
"message": "Torrent RPC Caminho:"
},
"btRpcPortText": {
"description": "Torrent RPC Porto:",
"message": "Torrent RPC Porto:"
},
"certAbsent": {
"description": "Conteúdo para informações do certificado se ausente",
"message": "Este site não está usando HTTPS. Ainda é verificado criptograficamente pelo I2P."
},
"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"
},
"description": {
"description": "Agora você pode usar o I2P neste navegador.",
"message": "Agora você pode usar o I2P neste navegador."
},
"description2": {
"description": "Se você está vendo esta página, é porque um erro proxy ocorreu. Algumas informações foram fornecidas para ajudá-lo a diagnosticar o problema.",
"message": "Se você está vendo esta página, é porque um erro proxy ocorreu. Algumas informações foram fornecidas para ajudá-lo a diagnosticar o problema."
},
"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": "I2P navegação de rede facilitada."
},
"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"
},
"fliplinks": {
"description": "Recursos de extensão e I2P",
"message": "Recursos de extensão e I2P"
},
"forumMessage": {
"description": "Mensagem de Ajuda",
"message": "Visite o Fórum I2P para saber mais ou pedir ajuda"
},
"headline": {
"description": "O Navegador de Internet Invisível",
"message": "O Navegador de Internet Invisível"
},
"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:"
},
"i2ppage": {
"description": "Mais informações estão disponíveis aqui.",
"message": "Mais informações estão disponíveis aqui."
},
"i2ptunnel": {
"description": "Descrição para i2ptunnel",
"message": "Ver mensagens de status proxy e configurar serviços e túneis."
},
"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"
},
"label-router-activepeers": {
"description": "Active Peers:",
"message": "Active Peers:"
},
"label-router-bandwidth": {
"description": "Largura de banda",
"message": "Largura de banda"
},
"label-router-bw-inbound-15s": {
"description": "Inbound bw 15s:",
"message": "Inbound bw 15s:"
},
"label-router-bw-inbound-1s": {
"description": "Inbound bw 1s:",
"message": "Inbound bw 1s:"
},
"label-router-bw-outbound-15s": {
"description": "15s",
"message": "15s"
},
"label-router-bw-outbound-1s": {
"description": "Fora da frente 1s:",
"message": "Fora da frente 1s:"
},
"label-router-net-tunnels-participating": {
"description": "Túnels de trânsito:",
"message": "Túnels de trânsito:"
},
"label-router-netdb-fastpeers": {
"description": "Peers rápidos:",
"message": "Peers rápidos:"
},
"label-router-netdb-highcapacitypeers": {
"description": "Alta capacidade Peers:",
"message": "Alta capacidade Peers:"
},
"label-router-netdb-isreseeding": {
"description": "Reseed status:",
"message": "Reseed status:"
},
"label-router-netdb-knownpeers": {
"description": "Known Peers:",
"message": "Known Peers:"
},
"label-router-peers": {
"description": "Peers",
"message": "Peers"
},
"label-router-status": {
"description": "Status do roteador:",
"message": "Status do roteador:"
},
"label-router-uptime": {
"description": "Tempo de funcionamento do roteador (Ms):",
"message": "Tempo de funcionamento do roteador (Ms):"
},
"label-router-version": {
"description": "Versão do roteador:",
"message": "Versão do roteador:"
},
"links": {
"description": "Recursos de extensão e I2P",
"message": "Recursos de extensão e I2P"
},
"linksExplain": {
"description": "Se você quiser obter mais informações sobre I2P, você pode visitar esses links.",
"message": "Se você quiser obter mais informações sobre I2P, você pode visitar esses links."
},
"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."
},
"onboardingButtonFive": {
"description": "Melhorar a sua Experiência",
"message": "Melhorar a sua Experiência"
},
"onboardingButtonFour": {
"description": "Arquivos de compartilhamento",
"message": "Compartilhando arquivos"
},
"onboardingButtonOne": {
"description": "Navegação de Rede I2P e Navegação de Rede Não-I2P",
"message": "Navegação de Rede I2P e Navegação de Rede Não-I2P"
},
"onboardingButtonThree": {
"description": "E-mail oculto",
"message": "E-mail oculto"
},
"onboardingButtonTwo": {
"description": "Proteção de Boundaries de rede",
"message": "Proteção de Boundaries de rede"
},
"onboardingButtonZero": {
"description": "Proteja sua privacidade",
"message": "Proteja sua privacidade"
},
"onboardingContentFive": {
"description": "Esta extensão pode ser combinada com outras extensões que às vezes melhoram sua funcionalidade. uBlock Origin, LocalCDN e jShelter são úteis para acelerar o carregamento da página, bloquear anúncios e limitar o poder do Javascript. Para usuários que querem bloquear todo o Javascript, NoScript é recomendado.",
"message": "Esta extensão pode ser combinada com outras extensões que às vezes melhoram sua funcionalidade. uBlock Origin, LocalCDN e jShelter são úteis para acelerar o carregamento da página, bloquear anúncios e limitar o poder do Javascript. Para usuários que querem bloquear todo o Javascript, NoScript é recomendado."
},
"onboardingContentFour": {
"description": "I2P é capaz de usar aplicativos peer-to-peer como BitTorrent, protegendo sua identidade quando você compartilha arquivos. Nosso cliente bittorrent anônimo está disponível no navegador.",
"message": "I2P é capaz de usar aplicativos peer-to-peer como BitTorrent, protegendo sua identidade quando você compartilha arquivos. Nosso cliente bittorrent anônimo está disponível no navegador."
},
"onboardingContentOne": {
"description": "Esta extensão funciona automaticamente quando você está navegando sites I2P. Se você quiser usar o I2P como um proxy para sites não-I2P, use o botão I2P In Private Browsing na barra de ferramentas e clique em New I2P Browser Tab para mudar para I2P Browsing em uma nova guia. Sua experiência enquanto navega na internet pode ser um pouco diferente. As coisas podem ser um pouco mais lentas, e dependendo do seu nível de segurança, alguns elementos podem não funcionar ou carregar. Você também pode ser solicitado a provar que você é um humano e não um robô.",
"message": "Esta extensão funciona automaticamente quando você está navegando sites I2P. Se você quiser usar o I2P como um proxy para sites não-I2P, use o botão I2P In Private Browsing na barra de ferramentas e clique em New I2P Browser Tab para mudar para I2P Browsing em uma nova guia. Sua experiência enquanto navega na internet pode ser um pouco diferente. As coisas podem ser um pouco mais lentas, e dependendo do seu nível de segurança, alguns elementos podem não funcionar ou carregar. Você também pode ser solicitado a provar que você é um humano e não um robô."
},
"onboardingContentThree": {
"description": "Há também um serviço de e-mail anônimo disponível dentro do I2P, que é acessível a partir do nosso navegador através do menu diretamente à direita.",
"message": "Há também um serviço de e-mail anônimo disponível dentro do I2P, que é acessível a partir do nosso navegador através do menu diretamente à direita."
},
"onboardingContentTwo": {
"description": "O I2P é normalmente administrado por meio de um WebUI (O \"Consola de Usuário \"), que o usuário às vezes visualiza no mesmo navegador que eles usam para visitar sites remotos. É essencial evitar que os sites possam acessar informações deste WebUI e outros serviços em execução local. Os sites da Clearnet permanecem no recipiente firefox-default, mas assim que o recipiente firefox-default solicitar um *.onion ou *.i2p, ele será instantaneamente contêiner. A ferramenta de gerenciamento de identidade do navegador do Tor controla as abas de clearnet, e eles são proxied usando o padrão I2P outproxy ou outproxy plugin.",
"message": "O I2P é normalmente administrado através de um WebUI (The \" Router Console \"), que o usuário às vezes visualiza no mesmo navegador que eles usam para visitar sites remotos. É essencial evitar que os sites possam acessar informações deste WebUI e outros serviços em execução local. Os sites da Clearnet permanecem no recipiente firefox-default, mas assim que o recipiente firefox-default solicitar um *.onion ou *.i2p, ele será instantaneamente contêiner. A ferramenta de gerenciamento de identidade do navegador do Tor controla as abas de clearnet, e eles são proxied usando o padrão I2P outproxy ou outproxy plugin."
},
"onboardingContentZero": {
"description": "Ao usar o I2P In Private Browsing Mode, você está protegido contra rastreamento e vigilância. O navegador I2P isola cookies e exclui o histórico do navegador após sua sessão. Essas modificações garantem que sua privacidade e segurança sejam protegidas como seu navegador.",
"message": "Ao usar o I2P In Private Browsing Mode, você está protegido contra rastreamento e vigilância. O navegador I2P isola cookies e exclui o histórico do navegador após sua sessão. Essas modificações garantem que sua privacidade e segurança sejam protegidas como seu navegador."
},
"onboardingFive": {
"description": "Dicas de experiência",
"message": "Dicas de experiência"
},
"onboardingFour": {
"description": "Navegação da Web",
"message": "Navegação da Web"
},
"onboardingOne": {
"description": "Configurar o seu Experiência",
"message": "Configurar o seu Experiência"
},
"onboardingThree": {
"description": "E-mail oculto",
"message": "E-mail oculto"
},
"onboardingTitle": {
"description": "Sobre I2P Em Navegação Privada",
"message": "Sobre I2P Em Navegação Privada"
},
"onboardingTwo": {
"description": "Compartilhe arquivos",
"message": "Compartilhe arquivos"
},
"onboardingZero": {
"description": "Proteja sua privacidade",
"message": "Proteja sua privacidade"
},
"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"
},
"proxy-check": {
"description": "A Proxy está pronta.",
"message": "A Proxy está pronta."
},
"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"
},
"readyness": {
"description": "A Proxy está pronta.",
"message": "A Proxy está pronta."
},
"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"
},
"returnhome": {
"description": "/",
"message": "/"
},
"router-net-bw-inbound-15s": {
"description": "Substitua com largura de banda Router Outbound 15s",
"message": "Substitua com largura de banda Router Outbound 15s"
},
"router-net-bw-inbound-1s": {
"description": "Substitua com largura de banda Router Inbound 1s",
"message": "Substitua com largura de banda Router Inbound 1s"
},
"router-net-bw-outbound-15s": {
"description": "Substitua com largura de banda Router Outbound 15s",
"message": "Substitua com largura de banda Router Outbound 15s"
},
"router-net-bw-outbound-1s": {
"description": "Substitua com largura de banda Router Outbound 1s",
"message": "Substitua com largura de banda Router Outbound 1s"
},
"router-net-tunnels-participating": {
"description": "Substitua com Contagem de Túnel Participante de Roteador",
"message": "Substitua com Contagem de Túnel Participante de Roteador"
},
"router-netdb-activepeers": {
"description": "Substituir com Router Active Peers",
"message": "Substituir com Router Active Peers"
},
"router-netdb-fastpeers": {
"description": "Substituir com Router Fast Peers",
"message": "Substituir com Router Fast Peers"
},
"router-netdb-highcapacitypeers": {
"description": "Substituir com Peers de alta capacidade",
"message": "Substituir com Peers de alta capacidade"
},
"router-netdb-isreseeding": {
"description": "Substituir com Router netDB Reseeding Status",
"message": "Substituir com Router netDB Reseeding Status"
},
"router-netdb-knownpeers": {
"description": "Substitua com Router Known Peers",
"message": "Substitua com Router Known Peers"
},
"router-restart": {
"description": "Roteador de reinício graciosamente",
"message": "Roteador de reinício graciosamente"
},
"router-shutdown": {
"description": "Roteador de desligamento graciosamente",
"message": "Roteador de desligamento graciosamente"
},
"router-status": {
"description": "Substituir com status de roteador",
"message": "Substituir com status de roteador"
},
"router-uptime": {
"description": "Substitua com Router Uptime",
"message": "Substitua com Router Uptime"
},
"router-version": {
"description": "Substituir com Router Versão",
"message": "Substituir com Router Versão"
},
"routerConsole": {
"description": "Descrição para o console do roteador.",
"message": "Acesse seu console de roteador I2P e sua gama completa de aplicações e configurações."
},
"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)"
},
"rpcHelpText": {
"description": "Configure as opções do I2PControl aqui. Configure suas opções Bittorrent aqui.",
"message": "Configure as opções do I2PControl aqui. Configure suas opções Bittorrent aqui."
},
"rpcHostText": {
"description": "Porta de controle:",
"message": "Porta de controle:"
},
"rpcPassText": {
"description": "Senha de controle: Torrent RPC Senha:",
"message": "Senha de controle: Torrent RPC Senha:"
},
"rpcPathText": {
"description": "Caminho de controle:",
"message": "Caminho de controle:"
},
"rpcPortText": {
"description": "Anfitrião de controle:",
"message": "Anfitrião de controle:"
},
"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."
},
"signingcert": {
"description": "Assinado por:",
"message": "Assinado por:"
},
"siteLabel": {
"description": "Label for i2p site info",
"message": "Endereço/Site Informações:"
},
"sitecert": {
"description": "Informação do Certificado:",
"message": "Informação do Certificado:"
},
"snark": {
"description": "Descrição para Bittorrent",
"message": "Acesso rápido ao Snark, o aplicativo de compartilhamento de arquivos específico da rede Peer-to-peer I2P."
},
"sourcehead": {
"description": "Obter o código fonte:",
"message": "Obter o código fonte:"
},
"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": "Acesso rápido ao cliente de e-mail da rede SusiMail I2P."
},
"text-section-header": {
"description": "O Navegador de Internet Invisível",
"message": "O Navegador de Internet Invisível"
},
"text-section-proxyerr-header": {
"description": "Um erro Proxy tem Occurred",
"message": "Um erro Proxy tem Occurred"
},
"text-section-torrents-header": {
"description": "Baixar Torrent",
"message": "Baixar Torrent"
},
"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)"
},
"toopie": {
"description": "Para obter informações sobre o seu status de roteador I2P, vá aqui:",
"message": "Para obter informações sobre o seu status de roteador I2P, vá aqui:"
},
"toopieHtmlHeadline": {
"description": "I2P Router Informações",
"message": "I2P Router Informações"
},
"toopieName": {
"description": "Nome da barra lateral.",
"message": "também. html"
},
"toopieTLS": {
"description": "Nome do painel de segurança.",
"message": "Propriedades do Site"
},
"topbar": {
"description": "Browse Download",
"message": "Browse Download"
},
"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)"
},
"torrent-action": {
"description": "Baixar",
"message": "Baixar"
},
"torrentControls": {
"description": "Controles Torrent",
"message": "Controles Torrent"
},
"torrentDownloads": {
"description": "Baixar Torrent",
"message": "Baixar Torrent"
},
"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)"
},
"torrentui-opener": {
"description": "Abrir WebUI",
"message": "Abrir WebUI"
},
"visit-irc": {
"description": "Visite IRC",
"message": "Visite IRC"
},
"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)"
},
"webpage": {
"description": "Mais informações estão disponíveis aqui.",
"message": "Mais informações estão disponíveis aqui."
},
"window-visit-console": {
"description": "Console de roteador I2P",
"message": "Console de roteador I2P"
},
"window-visit-help": {
"description": "Página de Ajuda de Extensão",
"message": "Página de Ajuda de Extensão"
},
"window-visit-homepage": {
"description": "O Navegador de Internet Invisível",
"message": "O Navegador de Internet Invisível"
},
"window-visit-i2p": {
"description": "I2P Página inicial do projeto:",
"message": "I2P Página inicial do projeto:"
},
"window-visit-i2ptunnel": {
"description": "Gerente de Serviços Escondidos",
"message": "Gerente de Serviços Escondidos"
},
"window-visit-index": {
"description": "Página inicial da Webextension:",
"message": "Página inicial da Webextension:"
},
"window-visit-releases": {
"description": "Lançamentos:",
"message": "Lançamentos:"
},
"window-visit-router": {
"description": "Console de roteador",
"message": "Console de roteador"
},
"window-visit-settings": {
"description": "Abra as configurações",
"message": "Abra as configurações"
},
"window-visit-snark": {
"description": "BitTorrent",
"message": "BitTorrent"
},
"window-visit-sources": {
"description": "Código de origem:",
"message": "Código de origem:"
},
"window-visit-susimail": {
"description": "E-Mail",
"message": "E-Mail"
},
"window-visit-toopie": {
"description": "Toopie",
"message": "Toopie"
},
"window-visit-torrent": {
"description": "Para assistência, visite a página de ajuda torrent",
"message": "Para assistência, visite a página de ajuda torrent"
},
"windowVisitConsole": {
"description": "Roteador Console rótulo.",
"message": "Console do roteador:"
},
"windowVisitHelppage": {
"description": "Página de ajuda para o rótulo de extensão.",
"message": "InformaçÃμes da WebExtension:"
},
"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:"
}
}

View File

@@ -1,738 +0,0 @@
{
"CertLabel": {
"description": "Информация о сертификатах:",
"message": "Информация о сертификатах:"
},
"SignedLabel": {
"description": "Подписано:",
"message": "Подписано:"
},
"TorrentTypeLabel": {
"description": "Torrent Links:",
"message": "Torrent Links:"
},
"TypeLabel": {
"description": "Torrent Links:",
"message": "Torrent Links:"
},
"aboutconsole": {
"description": "Чтобы получить доступ к домашней странице консоли маршрутизатора, идите сюда:",
"message": "Чтобы получить доступ к домашней странице консоли маршрутизатора, идите сюда:"
},
"abouthome": {
"description": "Описание страницы кнопки распространения.",
"message": "Для получения дополнительной информации об этом продлении посетите эту страницу."
},
"addresstype": {
"description": "Тип адреса:",
"message": "Тип адреса:"
},
"applicationExplain": {
"description": "Описание раздела приложения.",
"message": "Консоль маршрутизатора I2P и приложения открываются на своей вкладке, предоставляя им те же преимущества безопасности, что и просмотр с этим расширением. Это добавляет большую защиту, изолируя каждое приложение и предотвращая другие вкладки (т.е. социальные сети и т.д.) от отпечатков пальцев или сценариев. Все вкладки используют идентификационные цвета для отслеживания вашего рабочего процесса I2P."
},
"applicationHeader": {
"description": "Заголовок для секции приложений.",
"message": "Приложения"
},
"beta": {
"description": "Это экспериментальный продукт.",
"message": "Это экспериментальный продукт."
},
"blogPreface": {
"description": "Предисловие для заголовка браузера",
"message": "Блог"
},
"blogPrefacePrivate": {
"description": "Предисловие для заголовка браузера",
"message": "Блог (Private)"
},
"bookmarksButton": {
"description": "Re-Create Закладки",
"message": "Re-Create Закладки"
},
"botePreface": {
"description": "Предисловие для заголовка браузера",
"message": "I2P-Bote Mail"
},
"botePrefacePrivate": {
"description": "Предисловие для заголовка браузера",
"message": "I2P-Bote Mail (Private)"
},
"browser-action": {
"description": "Просмотреть",
"message": "Просмотреть"
},
"btRpcHostText": {
"description": "Torrent RPC Хосте:",
"message": "Torrent RPC Хосте:"
},
"btRpcPathText": {
"description": "Torrent RPC Путь:",
"message": "Torrent RPC Путь:"
},
"btRpcPortText": {
"description": "Torrent RPC Порт:",
"message": "Torrent RPC Порт:"
},
"certAbsent": {
"description": "Содержание для справки, если отсутствует",
"message": "Этот сайт не использует HTTPS. Это все еще проверяется криптографически I2P."
},
"certPresent": {
"description": "Содержание для справки, если присутствует",
"message": "Этот сайт использует HTTPS. HTTPS над I2P является экспериментальным и требует самоподписанных сертификатов или альтернативных корневых авторитов."
},
"clearData": {
"description": "Чистый пункт меню Browsing Data.",
"message": "Четкие данные по хранению:"
},
"clearDesc": {
"description": "Очистить описание действий просмотра данных.",
"message": "Используйте это, чтобы стереть данные просмотра I2P."
},
"controlExplain": {
"description": "Введите панель управления.",
"message": "Эти управления используются для адаптации вашего I2P Browsing Experience"
},
"controlHeader": {
"description": "Заголовок для панели управления.",
"message": "Контроль"
},
"controlHelpText": {
"description": "Помощь в настройке опций для кнопки Reset Tunnel",
"message": "Настройте консоль маршрутизатора здесь."
},
"controlHostText": {
"description": "Host for the Router Console",
"message": "Управляющий хост:"
},
"controlHostValue": {
"description": "Host for the Router Console",
"message": "127.0.0.1"
},
"controlPortText": {
"description": "Port for the Router Console",
"message": "Порт управления:"
},
"controlPortValue": {
"description": "Port for the Router Console",
"message": "7657"
},
"description": {
"description": "Теперь вы можете использовать I2P в этом браузере.",
"message": "Теперь вы можете использовать I2P в этом браузере."
},
"description2": {
"description": "Если вы видите эту страницу, это потому, что произошла ошибка прокси. Была предоставлена определенная информация, которая поможет вам диагностировать проблему.",
"message": "Если вы видите эту страницу, это потому, что произошла ошибка прокси. Была предоставлена определенная информация, которая поможет вам диагностировать проблему."
},
"disableHistory": {
"description": "Историческая этикетка.",
"message": "Disable History in I2P Tabs?"
},
"enableWebRTC": {
"description": "WebRTC флажок.",
"message": "Включить WebRTC с прокси?"
},
"extensionDescription": {
"description": "Описание расширения.",
"message": "Поиск сети I2P был легким."
},
"extensionName": {
"description": "Название расширения.",
"message": "I2P В частном рысе"
},
"extensionNameVariant": {
"description": "Название расширения.",
"message": "I2P в частном браузере - Rhizome Variant"
},
"extensionPreface": {
"description": "Предисловие для заголовка браузера",
"message": "Управление I2P"
},
"extensionVersion": {
"description": "Версия расширения.",
"message": "1.28"
},
"fliplinks": {
"description": "Расширение и I2P",
"message": "Расширение и I2P"
},
"forumMessage": {
"description": "Сообщение",
"message": "Посетите форум I2P, чтобы узнать больше или попросить помощи"
},
"headline": {
"description": "Невидимый интернет-браузер",
"message": "Невидимый интернет-браузер"
},
"help": {
"description": "Описание страницы кнопки распространения.",
"message": "Для получения дополнительной информации об этом продлении посетите эту страницу."
},
"helpMessage": {
"description": "Сообщение",
"message": "Получить дополнительную помощь"
},
"histDesc": {
"description": "Описание действия истории",
"message": "История автоматически очищается, когда ваши вкладки I2P закрыты. Если вы хотите очистить историю, когда вы идете, проверьте эту коробку."
},
"homepage": {
"description": "Найти больше информации",
"message": "Больше информации здесь"
},
"hostText": {
"description": "Хост для HTTP или SOCKS5 Proxy",
"message": "Хосте:"
},
"i2ppage": {
"description": "Больше информации доступно здесь.",
"message": "Больше информации доступно здесь."
},
"i2ptunnel": {
"description": "Описание i2ptunnel",
"message": "Просмотр сообщений о состоянии прокси и настройка служб и туннелей."
},
"i2ptunnelPreface": {
"description": "Предисловие для заголовка браузера",
"message": "Hidden Services Manager"
},
"i2ptunnelPrefacePrivate": {
"description": "Предисловие для заголовка браузера",
"message": "Hidden Services Manager (Private)"
},
"infoMessage": {
"description": "Сообщение",
"message": "Теперь вы можете просмотреть eepWeb! Теперь ваш браузер настроен для анонимного просмотра в сети I2P. По мере просмотра ваш трафик будет маршрутизирован через другие сетевые узлы, чтобы замаскировать его происхождение, как с сервера, так и с самих узлов."
},
"infoTitle": {
"description": "Название для меню справки",
"message": "I2P Помощь"
},
"ircPreface": {
"description": "Предисловие для заголовка браузера",
"message": "Dispatch IRC"
},
"ircPrefacePrivate": {
"description": "Предисловие для заголовка браузера",
"message": "Dispatch IRC (Private)"
},
"isBase32": {
"description": "Сообщение для информационной панели сайта32",
"message": "I2P Base32-Formatted Address"
},
"isHostName": {
"description": "Сообщение для хостинга информационной панели сайта",
"message": "I2P Имя хоста"
},
"label-router-activepeers": {
"description": "Активные пивки:",
"message": "Активные пивки:"
},
"label-router-bandwidth": {
"description": "Bandwidth",
"message": "Bandwidth"
},
"label-router-bw-inbound-15s": {
"description": "Inbound bw 15s:",
"message": "Inbound bw 15s:"
},
"label-router-bw-inbound-1s": {
"description": "Inbound bw 1s:",
"message": "Inbound bw 1s:"
},
"label-router-bw-outbound-15s": {
"description": "15-е:",
"message": "15-е:"
},
"label-router-bw-outbound-1s": {
"description": "1s:",
"message": "1s:"
},
"label-router-net-tunnels-participating": {
"description": "Транзитные туннели:",
"message": "Транзитные туннели:"
},
"label-router-netdb-fastpeers": {
"description": "Быстрое пиво:",
"message": "Быстрое пиво:"
},
"label-router-netdb-highcapacitypeers": {
"description": "Высокая мощность Пьеса:",
"message": "Высокая мощность Пьеса:"
},
"label-router-netdb-isreseeding": {
"description": "Статус ресисел:",
"message": "Статус ресисел:"
},
"label-router-netdb-knownpeers": {
"description": "Известные пэры:",
"message": "Известные пэры:"
},
"label-router-peers": {
"description": "Пи",
"message": "Пи"
},
"label-router-status": {
"description": "Статус Маршрутизатора состояния:",
"message": "Статус Маршрутизатора состояния:"
},
"label-router-uptime": {
"description": "Маршрутизатор Uptime(Ms):",
"message": "Маршрутизатор Uptime(Ms):"
},
"label-router-version": {
"description": "Версия маршрутизатора:",
"message": "Версия маршрутизатора:"
},
"links": {
"description": "Расширение и I2P",
"message": "Расширение и I2P"
},
"linksExplain": {
"description": "Если вы хотите получить больше информации о I2P, вы можете посетить эти ссылки.",
"message": "Если вы хотите получить больше информации о I2P, вы можете посетить эти ссылки."
},
"mailPreface": {
"description": "Предисловие для заголовка браузера",
"message": "Веб-почта"
},
"mailPrefacePrivate": {
"description": "Предисловие для заголовка браузера",
"message": "Web Mail (Private)"
},
"muwirePreface": {
"description": "Предисловие для заголовка браузера",
"message": "MuWire"
},
"muwirePrefacePrivate": {
"description": "Предисловие для заголовка браузера",
"message": "MuWire (Private)"
},
"newsMessage": {
"description": "Сообщение",
"message": "Посетите I2P Blog to learn the latest about i2p."
},
"onboardingButtonFive": {
"description": "Совершенствование Опыт",
"message": "Совершенствование Опыт"
},
"onboardingButtonFour": {
"description": "Обмен файлами",
"message": "Обмен файлами"
},
"onboardingButtonOne": {
"description": "I2P Network Browsing and Non-I2P Network Browsing",
"message": "I2P Network Browsing and Non-I2P Network Browsing"
},
"onboardingButtonThree": {
"description": "Скрытая электронная почта",
"message": "Скрытая электронная почта"
},
"onboardingButtonTwo": {
"description": "Защита сетевых границ",
"message": "Защита сетевых границ"
},
"onboardingButtonZero": {
"description": "Защита вашей конфиденциальности",
"message": "Защита вашей конфиденциальности"
},
"onboardingContentFive": {
"description": "Это расширение может быть объединено с другими расширениями, которые иногда улучшают его функциональность. uBlock Origin, LocalCDN и jShelter полезны для ускорения загрузки страницы, блокировки рекламы и ограничения мощности Javascript. Для пользователей, которые хотят заблокировать все Javascript, рекомендуется NoScript.",
"message": "Это расширение может быть объединено с другими расширениями, которые иногда улучшают его функциональность. uBlock Origin, LocalCDN и jShelter полезны для ускорения загрузки страницы, блокировки рекламы и ограничения мощности Javascript. Для пользователей, которые хотят заблокировать все Javascript, рекомендуется NoScript."
},
"onboardingContentFour": {
"description": "I2P способен использовать одноранговые приложения, такие как BitTorrent, защищая вашу личность, когда вы делитесь файлами. Наш анонимный битторрент-клиент доступен в браузере.",
"message": "I2P способен использовать одноранговые приложения, такие как BitTorrent, защищая вашу личность, когда вы делитесь файлами. Наш анонимный битторрент-клиент доступен в браузере."
},
"onboardingContentOne": {
"description": "Это расширение работает автоматически при просмотре сайтов I2P. Если вы хотите использовать I2P в качестве прокси-сервера для не-I2P-сайтов, используйте кнопку I2P In Private Browsing в панели инструментов и нажмите на вкладку New I2P Browser для перехода на I2P Browsing в новой вкладке. Ваш опыт во время просмотра Интернета может быть немного другим. Вещи могут быть немного медленнее, и в зависимости от уровня безопасности некоторые элементы могут не работать или не загружаться. Вас также могут попросить доказать, что вы человек, а не робот.",
"message": "Это расширение работает автоматически при просмотре сайтов I2P. Если вы хотите использовать I2P в качестве прокси-сервера для не-I2P-сайтов, используйте кнопку I2P In Private Browsing в панели инструментов и нажмите на вкладку New I2P Browser для перехода на I2P Browsing в новой вкладке. Ваш опыт во время просмотра Интернета может быть немного другим. Вещи могут быть немного медленнее, и в зависимости от уровня безопасности некоторые элементы могут не работать или не загружаться. Вас также могут попросить доказать, что вы человек, а не робот."
},
"onboardingContentThree": {
"description": "Существует также анонимный сервис электронной почты, доступный внутри I2P, который доступен из нашего браузера через меню непосредственно справа.",
"message": "Существует также анонимный сервис электронной почты, доступный внутри I2P, который доступен из нашего браузера через меню непосредственно справа."
},
"onboardingContentTwo": {
"description": "I2P обычно вводится через веб-UI (The «Router Console»), который пользователь иногда рассматривает в том же браузере, который он использует для посещения удаленных сайтов. Важно не допустить, чтобы сайты могли получать доступ к информации из этого веб-UI и других местных сервисов. Сайты Clearnet остаются в контейнере Firefox-default, но как только контейнер Firefox-default запрашивает *.onion или *.i2p сайт, он будет мгновенно контейнеризирован. Инструменты управления идентификацией Tor Browser контролируют вкладки Clearnet, и они проксиируются с помощью плагина I2P outproxy или outproxy.",
"message": "I2P обычно вводится через веб-UI (The «Консоль маршрутизатора»), который пользователь иногда рассматривает в том же браузере, который он использует для посещения удаленных сайтов. Важно не допустить, чтобы сайты могли получать доступ к информации из этого веб-UI и других местных сервисов. Сайты Clearnet остаются в контейнере Firefox-default, но как только контейнер Firefox-default запрашивает *.onion или *.i2p сайт, он будет мгновенно контейнеризирован. Инструменты управления идентификацией Tor Browser контролируют вкладки Clearnet, и они проксиируются с помощью плагина I2P outproxy или outproxy."
},
"onboardingContentZero": {
"description": "При использовании I2P в режиме частного просмотра вы защищены от отслеживания и наблюдения. I2P Browser изолирует печенье и удаляет историю браузера после сеанса. Эти изменения гарантируют, что ваша конфиденциальность и безопасность защищены как ваш просмотр.",
"message": "При использовании I2P в режиме частного просмотра вы защищены от отслеживания и наблюдения. I2P Browser изолирует печенье и удаляет историю браузера после сеанса. Эти изменения гарантируют, что ваша конфиденциальность и безопасность защищены как ваш просмотр."
},
"onboardingFive": {
"description": "Опыт Советы",
"message": "Опыт Советы"
},
"onboardingFour": {
"description": "Просмотр Интернета",
"message": "Просмотр Интернета"
},
"onboardingOne": {
"description": "Настроить Опыт",
"message": "Настроить Опыт"
},
"onboardingThree": {
"description": "Скрытая электронная почта",
"message": "Скрытая электронная почта"
},
"onboardingTitle": {
"description": "О I2P в частном брови",
"message": "О I2P в частном брови"
},
"onboardingTwo": {
"description": "Общие файлы",
"message": "Общие файлы"
},
"onboardingZero": {
"description": "Защита вашей конфиденциальности",
"message": "Защита вашей конфиденциальности"
},
"portText": {
"description": "Порт для HTTP или SOCKS5 Proxy",
"message": "Порт:"
},
"protocolHandlerValue": {
"description": "Значение для обработчика протокола магнита",
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s\u0026action=Add\u0026foo=Add+torrent"
},
"proxy-check": {
"description": "Прокси готов.",
"message": "Прокси готов."
},
"proxyFailedStatus": {
"description": "Прокси потерпел неудачу.",
"message": "Прокси не готов"
},
"proxyHelpText": {
"description": "Помощь в настройке опций для кнопки Reset Tunnel",
"message": "Настройте прокси I2P здесь."
},
"proxySuccessStatus": {
"description": "Прокси потерпел неудачу.",
"message": "Прокси готов"
},
"readyness": {
"description": "Прокси готов.",
"message": "Прокси готов."
},
"releases": {
"description": "Описание новой страницы",
"message": "Проверьте новые релизы здесь"
},
"resetMessage": {
"description": "Сообщение для кнопки \"Загрузить туннель\"",
"message": "Сброс тоннеля"
},
"returnhome": {
"description": "/",
"message": "/"
},
"router-net-bw-inbound-15s": {
"description": "Заменить на Router Bandwidth Outbound 15s",
"message": "Заменить на Router Bandwidth Outbound 15s"
},
"router-net-bw-inbound-1s": {
"description": "Заменить на Router Bandwidth Inbound 1s",
"message": "Заменить на Router Bandwidth Inbound 1s"
},
"router-net-bw-outbound-15s": {
"description": "Заменить на Router Bandwidth Outbound 15s",
"message": "Заменить на Router Bandwidth Outbound 15s"
},
"router-net-bw-outbound-1s": {
"description": "Заменить на Router Bandwidth Outbound 1s",
"message": "Заменить на Router Bandwidth Outbound 1s"
},
"router-net-tunnels-participating": {
"description": "Заменить \"маршрутизатор\"",
"message": "Заменить \"маршрутизатор\""
},
"router-netdb-activepeers": {
"description": "Заменить \"маршрутизатор\"",
"message": "Заменить \"маршрутизатор\""
},
"router-netdb-fastpeers": {
"description": "Заменить \"маршрутизатор\"",
"message": "Заменить \"маршрутизатор\""
},
"router-netdb-highcapacitypeers": {
"description": "Заменить на пьесы высокой емкости",
"message": "Заменить на пьесы высокой емкости"
},
"router-netdb-isreseeding": {
"description": "Заменить \"маршрутизатор\"",
"message": "Заменить \"маршрутизатор\""
},
"router-netdb-knownpeers": {
"description": "Заменить \"маршрутизатором\"",
"message": "Заменить \"маршрутизатором\""
},
"router-restart": {
"description": "Изящный перезапуск маршрутизатора",
"message": "Изящный перезапуск маршрутизатора"
},
"router-shutdown": {
"description": "Изящный роутер",
"message": "Изящный роутер"
},
"router-status": {
"description": "Заменить статус маршрутизатора",
"message": "Заменить статус маршрутизатора"
},
"router-uptime": {
"description": "Заменить на Маршрутизатор",
"message": "Заменить на Маршрутизатор"
},
"router-version": {
"description": "Заменить на Маршрутизатор",
"message": "Заменить на Маршрутизатор"
},
"routerConsole": {
"description": "Описание консоли маршрутизатора.",
"message": "Доступ к консоли маршрутизатора I2P и его полному спектру приложений и конфигураций."
},
"routerPreface": {
"description": "Предисловие для заголовка браузера",
"message": "Консоль"
},
"routerPrefacePrivate": {
"description": "Предисловие для заголовка браузера",
"message": "Консоль маршрутизатора (Private)"
},
"rpcHelpText": {
"description": "Настройте параметры I2PControl здесь. Настройте параметры Bittorrent здесь.",
"message": "Настройте параметры I2PControl здесь. Настройте параметры Bittorrent здесь."
},
"rpcHostText": {
"description": "Порт управления:",
"message": "Порт управления:"
},
"rpcPassText": {
"description": "Control Password: Torrent RPC Пароль:",
"message": "Control Password: Torrent RPC Пароль:"
},
"rpcPathText": {
"description": "Путь управления:",
"message": "Путь управления:"
},
"rpcPortText": {
"description": "Управляющий хост:",
"message": "Управляющий хост:"
},
"rtcDesc": {
"description": "Описание действия WebRTC",
"message": "WebRTC отключен по умолчанию, но вы можете включить его обратно и заставить его почтить прокси. Если вы являетесь пользователем расширения браузера Snowflake, эта опция отключена, и WebRTC включен по умолчанию."
},
"signingcert": {
"description": "Подписано:",
"message": "Подписано:"
},
"siteLabel": {
"description": "Маркировка на сайте i2p",
"message": "Адрес / Сайт Информация:"
},
"sitecert": {
"description": "Информация о сертификатах:",
"message": "Информация о сертификатах:"
},
"snark": {
"description": "Описание Bittorrent",
"message": "Quick access to Snark, the Peer-to-peer I2P network specific file sharing application."
},
"sourcehead": {
"description": "Получить исходный код:",
"message": "Получить исходный код:"
},
"sources": {
"description": "Описание ссылки Исходного кода",
"message": "Просмотр исходного кода здесь"
},
"susimail": {
"description": "Описание электронной почты",
"message": "Быстрый доступ к сетевому почтовому клиенту SusiMail I2P."
},
"text-section-header": {
"description": "Невидимый интернет-браузер",
"message": "Невидимый интернет-браузер"
},
"text-section-proxyerr-header": {
"description": "Ошибка прокси",
"message": "Ошибка прокси"
},
"text-section-torrents-header": {
"description": "Скачать Torrent",
"message": "Скачать Torrent"
},
"titlePreface": {
"description": "Предисловие для заголовка браузера",
"message": "I2P браузер"
},
"titlePrefacePrivate": {
"description": "Предисловие для заголовка браузера",
"message": "I2P Browser (Private)"
},
"toopie": {
"description": "Для информации о вашем статусе маршрутизатора I2P, идите сюда:",
"message": "Для информации о вашем статусе маршрутизатора I2P, идите сюда:"
},
"toopieHtmlHeadline": {
"description": "Информация о маршруте I2P",
"message": "Информация о маршруте I2P"
},
"toopieName": {
"description": "Имя боковой панели.",
"message": "тоже. html"
},
"toopieTLS": {
"description": "Название группы безопасности.",
"message": "Свойства сайта"
},
"topbar": {
"description": "Скачать",
"message": "Скачать"
},
"torPreface": {
"description": "Предисловие для заголовка браузера",
"message": "Tor Manager"
},
"torPrefacePrivate": {
"description": "Предисловие для заголовка браузера",
"message": "Tor Manager (Private)"
},
"torrent-action": {
"description": "Скачать",
"message": "Скачать"
},
"torrentControls": {
"description": "Торрент-контроль",
"message": "Торрент-контроль"
},
"torrentDownloads": {
"description": "Скачать Torrent",
"message": "Скачать Torrent"
},
"torrentPreface": {
"description": "Предисловие для заголовка браузера",
"message": "Bittorrent"
},
"torrentPrefacePrivate": {
"description": "Предисловие для заголовка браузера",
"message": "Bittorrent (Private)"
},
"torrentui-opener": {
"description": "Open WebUI",
"message": "Open WebUI"
},
"visit-irc": {
"description": "Посетите IRC",
"message": "Посетите IRC"
},
"webPreface": {
"description": "Предисловие для заголовка браузера",
"message": "Веб-браузер"
},
"webPrefacePrivate": {
"description": "Предисловие для заголовка браузера",
"message": "Web Browser (Private)"
},
"webpage": {
"description": "Больше информации доступно здесь.",
"message": "Больше информации доступно здесь."
},
"window-visit-console": {
"description": "Консоль маршрутизатора I2P",
"message": "Консоль маршрутизатора I2P"
},
"window-visit-help": {
"description": "Страница справки",
"message": "Страница справки"
},
"window-visit-homepage": {
"description": "Невидимый интернет-браузер",
"message": "Невидимый интернет-браузер"
},
"window-visit-i2p": {
"description": "I2P Главная страница проекта:",
"message": "I2P Главная страница проекта:"
},
"window-visit-i2ptunnel": {
"description": "Hidden Services Manager",
"message": "Hidden Services Manager"
},
"window-visit-index": {
"description": "Веб-сайт:",
"message": "Веб-сайт:"
},
"window-visit-releases": {
"description": "Выпущено:",
"message": "Выпущено:"
},
"window-visit-router": {
"description": "Консоль",
"message": "Консоль"
},
"window-visit-settings": {
"description": "Откройте настройки",
"message": "Откройте настройки"
},
"window-visit-snark": {
"description": "BitTorrent",
"message": "BitTorrent"
},
"window-visit-sources": {
"description": "Код источника:",
"message": "Код источника:"
},
"window-visit-susimail": {
"description": "E-Mail",
"message": "E-Mail"
},
"window-visit-toopie": {
"description": "Toopie",
"message": "Toopie"
},
"window-visit-torrent": {
"description": "Для помощи посетите страницу помощи торренту",
"message": "Для помощи посетите страницу помощи торренту"
},
"windowVisitConsole": {
"description": "Маркировка Router Console.",
"message": "Консоль маршрутизатора:"
},
"windowVisitHelppage": {
"description": "Страница справки для ярлыка расширения.",
"message": "Информация о расширении сети:"
},
"windowVisitHomepage": {
"description": "Главная страница для ярлыка расширения.",
"message": "Главная страница:"
},
"windowVisitI2ptunnel": {
"description": "Название i2ptunnel",
"message": "Hidden Services Manager:"
},
"windowVisitReleases": {
"description": "Посетите страницу релиза",
"message": "Расширение:"
},
"windowVisitSnark": {
"description": "Название для Bittorrent",
"message": "Bittorrent:"
},
"windowVisitSources": {
"description": "Название для ссылки исходного кода",
"message": "Код источника распространения:"
},
"windowVisitSusimail": {
"description": "Название для электронной почты",
"message": "E-Mail:"
},
"windowVisitWebPage": {
"description": "Продление посещения на сайте Github",
"message": "Главная страница:"
}
}

View File

@@ -1,738 +0,0 @@
{
"CertLabel": {
"description": "证明信息:",
"message": "证明信息:"
},
"SignedLabel": {
"description": "常驻代表",
"message": "常驻代表"
},
"TorrentTypeLabel": {
"description": "引证联系:",
"message": "引证联系:"
},
"TypeLabel": {
"description": "引证联系:",
"message": "引证联系:"
},
"aboutconsole": {
"description": "进入路线者的主页。",
"message": "进入路线者的主页。"
},
"abouthome": {
"description": "展期页。.",
"message": "关于这一扩展的更多信息,本页访问。."
},
"addresstype": {
"description": "处理类型:",
"message": "处理类型:"
},
"applicationExplain": {
"description": "申请款的说明。.",
"message": "I2P路线r console and application in their自己的tab,为他们提供与延长这一期限相同的安全利益。 这增加了保护力度,将每项申请分开,并防止其他表格(社会媒体等)不指纹或文字。 所有表格都用来确定颜色,以跟踪你的I2P工作流。."
},
"applicationHeader": {
"description": "申请科长。.",
"message": "申请"
},
"beta": {
"description": "这是试验产品。.",
"message": "这是试验产品。."
},
"blogPreface": {
"description": "代页标题的序言",
"message": "评 注"
},
"blogPrefacePrivate": {
"description": "代页标题的序言",
"message": "Blog (Private)"
},
"bookmarksButton": {
"description": "Re-Create Books",
"message": "Re-Create Books"
},
"botePreface": {
"description": "代页标题的序言",
"message": "I2P-Bote Mail"
},
"botePrefacePrivate": {
"description": "代页标题的序言",
"message": "I2P-Bote Mail(Private)"
},
"browser-action": {
"description": "Browse",
"message": "Browse"
},
"btRpcHostText": {
"description": "D. 捕获方案 东道国:",
"message": "D. 捕获方案 东道国:"
},
"btRpcPathText": {
"description": "D. 捕获方案 Path:",
"message": "D. 捕获方案 Path:"
},
"btRpcPortText": {
"description": "D. 捕获方案 港口:",
"message": "D. 捕获方案 港口:"
},
"certAbsent": {
"description": "无证件的处理",
"message": "该网站没有使用HTTPS。 仍然由I2P核实。."
},
"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"
},
"description": {
"description": "你现在能够在本代行使用I2P。.",
"message": "你现在能够在本代行使用I2P。."
},
"description2": {
"description": "如果你看到这一页,就是因为出现了一种错误。 已经提供了一些资料,以帮助你查明该问题。.",
"message": "如果你看到这一页,就是因为出现了一种错误。 已经提供了一些资料,以帮助你查明该问题。."
},
"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"
},
"fliplinks": {
"description": "A. 推广和增加资源",
"message": "A. 推广和增加资源"
},
"forumMessage": {
"description": "求助者",
"message": "访问伊加特论坛学习更多或要求援助"
},
"headline": {
"description": "易读的因特网Browser",
"message": "易读的因特网Browser"
},
"help": {
"description": "展期页。.",
"message": "关于这一扩展的更多信息,本页访问。."
},
"helpMessage": {
"description": "求助者",
"message": "增加帮助"
},
"histDesc": {
"description": "历史行动说明",
"message": "当你的I2Ptab被关闭时,历史就自动明确。 如果你想像你那样明确历史,检查这个箱。."
},
"homepage": {
"description": "更多信息",
"message": "这方面的更多资料"
},
"hostText": {
"description": "HTTP或SOCKS5 Proxy",
"message": "东道国:"
},
"i2ppage": {
"description": "这里有更多资料。.",
"message": "这里有更多资料。."
},
"i2ptunnel": {
"description": "说明",
"message": "很少有电报和配置服务及隧道。."
},
"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人质"
},
"label-router-activepeers": {
"description": "精算师:",
"message": "精算师:"
},
"label-router-bandwidth": {
"description": "Bandwith",
"message": "Bandwith"
},
"label-router-bw-inbound-15s": {
"description": "有15人:",
"message": "有15人:"
},
"label-router-bw-inbound-1s": {
"description": "有1人:",
"message": "有1人:"
},
"label-router-bw-outbound-15s": {
"description": "第15条:",
"message": "第15条:"
},
"label-router-bw-outbound-1s": {
"description": "无限的桶1:",
"message": "无限的桶1:"
},
"label-router-net-tunnels-participating": {
"description": "过境渠道:",
"message": "过境渠道:"
},
"label-router-netdb-fastpeers": {
"description": "Fast Peers:",
"message": "Fast Peers:"
},
"label-router-netdb-highcapacitypeers": {
"description": "高能力 作者:",
"message": "高能力 作者:"
},
"label-router-netdb-isreseeding": {
"description": "重新定性:",
"message": "重新定性:"
},
"label-router-netdb-knownpeers": {
"description": "Known Peers:",
"message": "Known Peers:"
},
"label-router-peers": {
"description": "导 言",
"message": "导 言"
},
"label-router-status": {
"description": "现状:",
"message": "现状:"
},
"label-router-uptime": {
"description": "时间:",
"message": "时间:"
},
"label-router-version": {
"description": "Router Version:",
"message": "Router Version:"
},
"links": {
"description": "A. 推广和增加资源",
"message": "A. 推广和增加资源"
},
"linksExplain": {
"description": "如果你想获得更多关于I2P的资料,你可以访问这些联系。.",
"message": "如果你想获得更多关于I2P的资料,你可以访问这些联系。."
},
"mailPreface": {
"description": "代页标题的序言",
"message": "网站"
},
"mailPrefacePrivate": {
"description": "代页标题的序言",
"message": "网址:Mail(Private)"
},
"muwirePreface": {
"description": "代页标题的序言",
"message": "MuWire"
},
"muwirePrefacePrivate": {
"description": "代页标题的序言",
"message": "MuWire(Private)"
},
"newsMessage": {
"description": "求助者",
"message": "访问I2P 学习最新一倍。."
},
"onboardingButtonFive": {
"description": "改进 经验",
"message": "改进 经验"
},
"onboardingButtonFour": {
"description": "分享电影",
"message": "分享档案"
},
"onboardingButtonOne": {
"description": "I2P网络",
"message": "I2P网络"
},
"onboardingButtonThree": {
"description": "Hidden email",
"message": "Hidden email"
},
"onboardingButtonTwo": {
"description": "B. 保护网络 Bounds",
"message": "B. 保护网络 Bounds"
},
"onboardingButtonZero": {
"description": "保护你的隐私",
"message": "保护你的隐私"
},
"onboardingContentFive": {
"description": "这种扩展可以与其他延期结合起来,有时会改善其功能。 地方非传染性疾病和珠宝是加速装页、堵塞器和限制瓦斯文字的权力的有用。 对于想要阻止所有贾瓦文的用户,建议不附加说明。.",
"message": "这种扩展可以与其他延期结合起来,有时会改善其功能。 地方非传染性疾病和珠宝是加速装页、堵塞器和限制瓦斯文字的权力的有用。 对于想要阻止所有贾瓦文的用户,建议不附加说明。."
},
"onboardingContentFour": {
"description": "I2P在你分享档案时能够使用像BitTorrent这样的同侪对用户的应用,保护你的身份。 我们一个匿名的客户可在代管处获得。.",
"message": "I2P在你分享档案时能够使用像BitTorrent这样的同侪对用户的应用,保护你的身份。 我们一个匿名的客户可在代管处获得。."
},
"onboardingContentOne": {
"description": "这一扩展工作自然,因为你正在掠夺I2P地点。 如果你想把I2P用作非I2P地点的辅助性,则使用I2P的私人Browsing button在工具bar和点击新I2PBrowser Tab转向新的表格。 你在浏览互联网方面的经验可能很小。 口号可能是缓慢的,取决于你的安全水平,有些要素可能不会工作或装载。 也请你证明你是人类,而不是一种抢劫。.",
"message": "这一扩展工作自然,因为你正在掠夺I2P地点。 如果你想把I2P用作非I2P地点的辅助性,则使用I2P的私人Browsing button在工具bar和点击新I2PBrowser Tab转向新的表格。 你在浏览互联网方面的经验可能很小。 口号可能是缓慢的,取决于你的安全水平,有些要素可能不会工作或装载。 也请你证明你是人类,而不是一种抢劫。."
},
"onboardingContentThree": {
"description": "在I2P内也可提供匿名电子邮件服务,这直接通过男性获得。.",
"message": "在I2P内也可提供匿名电子邮件服务,这直接通过男性获得。."
},
"onboardingContentTwo": {
"description": "I2P通常通过UI(“Router Console”(“Router Console”)进行管理,用户有时在使用同一浏览地点访问边远地点时会发表意见。 必须防止网站能够从这个万维网和其他当地经营服务获得信息。 直截网地点仍然在消防器上,但一旦防火药集装箱请求 *.onion或*.i2p地点,便将安装集装箱。 Tor Browser的身份证管理工具控制了明确的网上表格,并且使用了“I2P”号信,或“Inprio plugin”。.",
"message": "I2P通常通过UI(“Router Console”(“Router Console”)进行管理,用户有时在使用同一浏览地点访问边远地点时会发表意见。 必须防止网站能够从这个万维网和其他当地经营服务获得信息。 直截网地点仍然在消防器上,但一旦防火药集装箱请求 *.onion或*.i2p地点,便将安装集装箱。 Tor Browser的身份证管理工具控制了明确的网上表格,并且使用了“I2P”号信,或“Inprio plugin”。."
},
"onboardingContentZero": {
"description": "在使用I2P的私人Browsing Mode时,你受到保护,不受跟踪和监测。 I2PBrowser是厨房,在你届会之后删除了你的代行历史。 这些修改确保你的隐私权和安全受到保护,因为你的代言。.",
"message": "在使用I2P的私人Browsing Mode时,你受到保护,不受跟踪和监测。 I2PBrowser是厨房,在你届会之后删除了你的代行历史。 这些修改确保你的隐私权和安全受到保护,因为你的代言。."
},
"onboardingFive": {
"description": "经验",
"message": "经验"
},
"onboardingFour": {
"description": "B. 网站的浏览",
"message": "B. 网站的浏览"
},
"onboardingOne": {
"description": "你们 经验",
"message": "你们 经验"
},
"onboardingThree": {
"description": "Hidden email",
"message": "Hidden email"
},
"onboardingTitle": {
"description": "约I2P 私人旅舍",
"message": "约I2P 私人旅舍"
},
"onboardingTwo": {
"description": "Share Files",
"message": "Share Files"
},
"onboardingZero": {
"description": "保护你的隐私",
"message": "保护你的隐私"
},
"portText": {
"description": "HTTP或SOCKS5 Proxy港",
"message": "港口:"
},
"protocolHandlerValue": {
"description": "对磁带议定书手的价值",
"message": "http://127.0.0.1:7657/i2psnark/吗?nofilter_newURL=%s\u0026action=Add\u0026foo=Add+torrentrenttorrent"
},
"proxy-check": {
"description": "准备好。.",
"message": "准备好。."
},
"proxyFailedStatus": {
"description": "失败状况。.",
"message": "没有准备好的。"
},
"proxyHelpText": {
"description": "B. 帮助精简重新启动的Tunnel但顿办法",
"message": "调整你的I2P proxy。."
},
"proxySuccessStatus": {
"description": "失败状况。.",
"message": "准备好"
},
"readyness": {
"description": "准备好。.",
"message": "准备好。."
},
"releases": {
"description": "新发行页的说明",
"message": "这里新排放的检查"
},
"resetMessage": {
"description": "Reset Tunnel但顿先生",
"message": "B. 重新定位"
},
"returnhome": {
"description": "/",
"message": "/"
},
"router-net-bw-inbound-15s": {
"description": "将Router Bandwidth外语改为15",
"message": "将Router Bandwidth外语改为15"
},
"router-net-bw-inbound-1s": {
"description": "第1条",
"message": "第1条"
},
"router-net-bw-outbound-15s": {
"description": "将Router Bandwidth外语改为15",
"message": "将Router Bandwidth外语改为15"
},
"router-net-bw-outbound-1s": {
"description": "改为Router Bandwidth外1",
"message": "改为Router Bandwidth外1"
},
"router-net-tunnels-participating": {
"description": "改为:",
"message": "改为:"
},
"router-netdb-activepeers": {
"description": "改为:",
"message": "改为:"
},
"router-netdb-fastpeers": {
"description": "将Router Fast Peers改为",
"message": "将Router Fast Peers改为"
},
"router-netdb-highcapacitypeers": {
"description": "高容量器的更换",
"message": "高容量器的更换"
},
"router-netdb-isreseeding": {
"description": "改为:",
"message": "改为:"
},
"router-netdb-knownpeers": {
"description": "将Router Known Peers改为",
"message": "将Router Known Peers改为"
},
"router-restart": {
"description": "宽恕",
"message": "宽恕"
},
"router-shutdown": {
"description": "穿梭关闭路线",
"message": "穿梭关闭路线"
},
"router-status": {
"description": "改为:",
"message": "改为:"
},
"router-uptime": {
"description": "改为:",
"message": "改为:"
},
"router-version": {
"description": "将Router Version改为",
"message": "将Router Version改为"
},
"routerConsole": {
"description": "标示路线。.",
"message": "你的I2P路线r console及其各种应用和配置。."
},
"routerPreface": {
"description": "代页标题的序言",
"message": "Router Console"
},
"routerPrefacePrivate": {
"description": "代页标题的序言",
"message": "Router Console(Private)"
},
"rpcHelpText": {
"description": "调整你的I2PControl备选办法。 调整你在这方面的可支配性选择。.",
"message": "调整你的I2PControl备选办法。 调整你在这方面的可支配性选择。."
},
"rpcHostText": {
"description": "管制港:",
"message": "管制港:"
},
"rpcPassText": {
"description": "管制护照前言:逮捕证 护照:",
"message": "管制护照前言:逮捕证 护照:"
},
"rpcPathText": {
"description": "控制包:",
"message": "控制包:"
},
"rpcPortText": {
"description": "控制旅舍:",
"message": "控制旅舍:"
},
"rtcDesc": {
"description": "海报业务说明",
"message": "RTC网站因违约而残疾,但你可以回到它身上并迫使它名誉。 如果你是Snowflake browser展的用户,这一选择是残疾的,而网络检查中心则以违约方式提出。."
},
"signingcert": {
"description": "常驻代表",
"message": "常驻代表"
},
"siteLabel": {
"description": "Label for i2psite info",
"message": "地址/新闻:"
},
"sitecert": {
"description": "证明信息:",
"message": "证明信息:"
},
"snark": {
"description": "对Bittor的通知",
"message": "快速进入Snark, Peer-to-peer I2P网络的具体档案分享申请。."
},
"sourcehead": {
"description": "来源守则:",
"message": "来源守则:"
},
"sources": {
"description": "源代码联系的说明",
"message": "加入本源代码"
},
"susimail": {
"description": "电子邮件说明",
"message": "快速进入苏西马·伊2P网络电子邮件用户。."
},
"text-section-header": {
"description": "易读的因特网Browser",
"message": "易读的因特网Browser"
},
"text-section-proxyerr-header": {
"description": "A Proxy Error公司",
"message": "A Proxy Error公司"
},
"text-section-torrents-header": {
"description": "卸货",
"message": "卸货"
},
"titlePreface": {
"description": "代页标题的序言",
"message": "I2PBrowser"
},
"titlePrefacePrivate": {
"description": "代页标题的序言",
"message": "I2P Browser(Private)"
},
"toopie": {
"description": "关于你的I2P路线地位的资料,见下文:",
"message": "关于你的I2P路线地位的资料,见下文:"
},
"toopieHtmlHeadline": {
"description": "I2P Router Information",
"message": "I2P Router Information"
},
"toopieName": {
"description": "一方的名字。.",
"message": "也是这样。 评 注"
},
"toopieTLS": {
"description": "安全小组名称。.",
"message": "特 费"
},
"topbar": {
"description": "Browse Down",
"message": "Browse Down"
},
"torPreface": {
"description": "代页标题的序言",
"message": "管理人员"
},
"torPrefacePrivate": {
"description": "代页标题的序言",
"message": "导 言"
},
"torrent-action": {
"description": "D. 所有权",
"message": "D. 所有权"
},
"torrentControls": {
"description": "前体管制",
"message": "前体管制"
},
"torrentDownloads": {
"description": "卸货",
"message": "卸货"
},
"torrentPreface": {
"description": "代页标题的序言",
"message": "Bittorrent"
},
"torrentPrefacePrivate": {
"description": "代页标题的序言",
"message": "Bittorrent (Private)"
},
"torrentui-opener": {
"description": "开放网站",
"message": "开放网站"
},
"visit-irc": {
"description": "B. 访问索马里",
"message": "B. 访问索马里"
},
"webPreface": {
"description": "代页标题的序言",
"message": "Browser"
},
"webPrefacePrivate": {
"description": "代页标题的序言",
"message": "网站Browser(Private)"
},
"webpage": {
"description": "这里有更多资料。.",
"message": "这里有更多资料。."
},
"window-visit-console": {
"description": "I2P Router Console",
"message": "I2P Router Console"
},
"window-visit-help": {
"description": "推广助产",
"message": "推广助产"
},
"window-visit-homepage": {
"description": "易读的因特网Browser",
"message": "易读的因特网Browser"
},
"window-visit-i2p": {
"description": "I2P 项目家页:",
"message": "I2P 项目家页:"
},
"window-visit-i2ptunnel": {
"description": "Hidden服务主管",
"message": "Hidden服务主管"
},
"window-visit-index": {
"description": "网页:",
"message": "网页:"
},
"window-visit-releases": {
"description": "产出:",
"message": "产出:"
},
"window-visit-router": {
"description": "Router Console",
"message": "Router Console"
},
"window-visit-settings": {
"description": "开放环境",
"message": "开放环境"
},
"window-visit-snark": {
"description": "BitTorrent",
"message": "BitTorrent"
},
"window-visit-sources": {
"description": "资料来源法典:",
"message": "资料来源法典:"
},
"window-visit-susimail": {
"description": "E-Mail",
"message": "E-Mail"
},
"window-visit-toopie": {
"description": "通 力",
"message": "通 力"
},
"window-visit-torrent": {
"description": "关于援助,访问亲临帮助页",
"message": "关于援助,访问亲临帮助页"
},
"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": "推广家庭页:"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 KiB

View File

@@ -1,478 +0,0 @@
/* eslint-disable no-continue */
/* eslint-disable no-await-in-loop */
/* eslint-disable max-len */
/* eslint-disable no-ternary */
var titlepref = chrome.i18n.getMessage("titlePreface");
var titleprefpriv = chrome.i18n.getMessage("titlePrefacePrivate");
var webpref = chrome.i18n.getMessage("webPreface");
var webprefpriv = chrome.i18n.getMessage("webPrefacePrivate");
var routerpref = chrome.i18n.getMessage("routerPreface");
var routerprefpriv = chrome.i18n.getMessage("routerPrefacePrivate");
var mailpref = chrome.i18n.getMessage("mailPreface");
var mailprefpriv = chrome.i18n.getMessage("mailPrefacePrivate");
var torrentpref = chrome.i18n.getMessage("torrentPreface");
var torrentprefpriv = chrome.i18n.getMessage("torrentPrefacePrivate");
var tunnelpref = chrome.i18n.getMessage("i2ptunnelPreface");
var tunnelprefpriv = chrome.i18n.getMessage("i2ptunnelPrefacePrivate");
var ircpref = chrome.i18n.getMessage("ircPreface");
var ircprefpriv = chrome.i18n.getMessage("ircPrefacePrivate");
var extensionpref = chrome.i18n.getMessage("extensionPreface");
var muwirepref = chrome.i18n.getMessage("muwirePreface");
var muwireprefpriv = chrome.i18n.getMessage("muwirePrefacePrivate");
var botepref = chrome.i18n.getMessage("botePreface");
var blogpref = chrome.i18n.getMessage("blogPreface");
var blogprefpriv = chrome.i18n.getMessage("blogPrefacePrivate");
var torpref = chrome.i18n.getMessage("torPreface");
var torprefpriv = chrome.i18n.getMessage("torPrefacePrivate");
function onError(err) {
console.log("(background)", err);
}
function logContexts(contexts) {
if (contexts) {
console.log(contexts);
}
}
function onContextsGot(contexts) {
const prefList = [
{ name: titlepref, color: "orange", icon: "fingerprint" },
{ name: blogpref, color: "pink", icon: "pet" },
{ name: webpref, color: "red", icon: "circle" },
{ name: routerpref, color: "blue", icon: "briefcase" },
{ name: tunnelpref, color: "green", icon: "tree" },
{ name: mailpref, color: "yellow", icon: "briefcase" },
{ name: torrentpref, color: "purple", icon: "chill" },
{ name: ircpref, color: "red", icon: "vacation" },
{ name: torpref, color: "purple", icon: "circle" },
{ name: muwirepref, color: "turquoise", icon: "gift" },
{ name: botepref, color: "blue", icon: "fence" },
];
const ids = contexts.map((context) => context.name);
console.log("Checking new contexts");
prefList.forEach((pref) => {
if (ids.indexOf(pref.name) === -1) {
browser.contextualIdentities.create(pref).then(onCreated, onNotCreated);
}
});
}
browser.windows.onCreated.addListener(onContextsGot);
// every time a window opens, call onContextsGot
browser.tabs.onCreated.addListener(onContextsGot);
function onContextsError() {
console.log("Error finding contextual identities, is the API enabled?");
}
function onCreated(context) {
console.log(" ID:", context.cookieStoreId, "created.");
}
function onNotCreated(context) {
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(themeWindow);
browser.tabs.onActivated.addListener(themeWindow);
}
});
function themeWindow(window) {
function dynamicTheme() {
console.log("(theme)Active in I2P App window");
let ctheme = browser.theme.getCurrent();
ctheme.then(setDynamicTheme);
function setDynamicTheme(oldtheme) {
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");
let ctheme = browser.theme.getCurrent();
ctheme.then(setBrowserTheme);
function setBrowserTheme(oldtheme) {
btheme.images = oldtheme.images;
if (window.incognito) {
browser.theme.update(window.id, btheme);
} else {
browser.theme.update(window.id, btheme);
}
}
}
function logTabs(tabInfo) {
for (const tab of tabInfo) {
console.debug("(theme) logging tab", tab);
}
function onContextGotTheme(context) {
console.debug("(theme) deciding theme for context", 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) default context identified");
unsetTheme();
}
}
var querying = browser.tabs.query({
currentWindow: true,
active: true,
});
querying.then(logTabs, onThemeError);
}
function queryTitle(window) {
// Check if the window is in private browsing
function onContextError() {
console.log("(theme) Error finding context");
}
function setTitle(title, privTitle) {
const titlePreface = window.incognito ? privTitle : title;
browser.windows.update(window.id, { titlePreface });
}
function onContextGotTitle(context) {
const titleMap = {
titlepref: "Active in I2P window",
muwirepref: "Active in MuWire window",
routerpref: "Active in Router Console window",
botepref: "Active in Bote window",
tunnelpref: "Active in Hidden Services Manager window",
mailpref: "Active in I2P Web Mail window",
blogpref: "Active in I2P Blog window",
torrentpref: "Active in I2P Torrent window",
ircpref: "Active in IRC window",
torpref: "Active in Tor Manager window",
};
const { name } = context;
console.log(titleMap[name]);
setTitle(name, `${name}priv`);
}
function logTabs(tabInfo) {
const { cookieStoreId } = tabInfo[0];
if (
cookieStoreId === "firefox-default" ||
cookieStoreId === "firefox-private"
) {
setTitle("", "");
} else {
browser.contextualIdentities
.get(cookieStoreId)
.then(onContextGotTitle, onContextError);
}
}
const 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(queryTitle, onPlatformError);
});
browser.tabs.onActivated.addListener(() => {
var getting = browser.windows.getCurrent({
populate: true,
});
getting.then(queryTitle, onPlatformError);
});
}
});
function handleClick() {
console.log("Opening page action");
browser.pageAction.openPopup();
}
browser.pageAction.onClicked.addListener(handleClick);
async function checkCertificate(details) {
if (!details.url.startsWith("https") || !details.url.includes(".i2p")) {
return;
}
const activeTabs = await browser.tabs.query({ active: true });
if (!activeTabs) {
return;
}
for (const tab of activeTabs) {
if (details.url !== tab.url) {
continue;
}
try {
const 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(
checkCertificate,
{ urls: ["<all_urls>"] },
["blocking", "responseHeaders"]
);
function onClosedWindowCheck() {
const contextQuery = browser.contextualIdentities.query({
name: "titlepref",
});
function checkTabs(context) {
for (let ctx of context) {
function deleteIfEmpty(tabs) {
if (tabs.length === 0) {
browser.contextualIdentities.remove(ctx.cookieStoreId);
}
}
const tabs = browser.tabs.query({ cookieStoreId: ctx.cookieStoreId });
tabs.then(deleteIfEmpty, onError);
}
}
contextQuery.then(checkTabs, onError);
}
async function onOpenedWindowCheck() {
const contexts = await browser.contextualIdentities.query({
name: titlepref,
});
function deleteContextIfNoTabs(tabs, context) {
if (tabs.length == 0 && context != 0) {
browser.contextualIdentities.remove(context.cookieStoreId);
}
// once we're done, re-create all the contexts
browser.contextualIdentities.query({}).then(onContextsGot, onContextsError);
}
async function checkTabs(context) {
const tabs = await browser.tabs.query({
cookieStoreId: context.cookieStoreId,
});
await deleteContextIfNoTabs(tabs, context);
}
for (const context of contexts) {
await checkTabs(context);
}
}
onOpenedWindowCheck();
onContextsGot();
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);
}
function putCurrentThemeInLocalStorage() {
let mine = isMyTheme();
mine.then(processTheme, themeStoreError);
function processTheme(mineval) {
console.debug("(theme) validating the current theme:", !mineval);
if (mineval) {
return;
}
// get the current theme:
const currentTheme = browser.theme.getCurrent();
currentTheme.then(storeTheme, themeStoreError);
function storeTheme(theme) {
console.debug("(theme) stored the current theme:", theme);
browser.storage.local.set({ name: "theme", theme });
}
}
function themeStoreError(err) {
console.warn("(theme) theme storage error", err);
}
}
function putLatestThemeIDInLocalStorage(extensionInfo) {
let mine = isMyTheme();
mine.then(processTheme, themeStoreError);
function processTheme(mineval) {
console.debug("(theme) validating the current constant theme:", !mineval);
if (mineval) {
return;
}
console.debug("(theme) storing theme by ID", extensionInfo.id);
if (extensionInfo.type === "theme") {
let themeID = extensionInfo.id;
browser.storage.local.set({ themeID });
}
}
function themeStoreError(err) {
console.warn("(theme) theme ID storage error", err);
}
}
function restoreLatestThemeIDInLocalStorage() {
const storedTheme = browser.storage.local.get("themeID");
storedTheme.then(restoreTheme, restoreThemeError);
function restoreTheme(theme) {
if (theme.themeID) {
let dis = browser.management.setEnabled(theme.themeID, false);
dis.then(function () {
console.debug("(theme) theme restored by ID", theme.themeID);
browser.management.setEnabled(theme.themeID, true);
});
}
}
function restoreThemeError(err) {
console.warn("(theme) theme restore error", err);
}
}
browser.management.onEnabled.addListener(putLatestThemeIDInLocalStorage);
function onThemeError(err) {
console.warn("(theme) theme error", err);
}
browser.theme.onUpdated.addListener(putCurrentThemeInLocalStorage);
browser.windows.onCreated.addListener(putCurrentThemeInLocalStorage);
browser.tabs.onCreated.addListener(putCurrentThemeInLocalStorage);
function unsetTheme() {
const storedTheme = browser.storage.local.get("theme");
storedTheme.then(restoreTheme, restoreThemeError);
async function restoreTheme(theme) {
let mt = await isMyTheme();
if (mt) {
if (theme.theme) {
console.debug("(theme) analyzing theme", theme.theme);
if (theme.theme.colors) {
theme.theme.images = {};
console.warn(
"(theme) There's not a way to restore theme images yet."
);
browser.theme.update(theme.theme);
console.log("(theme) restored the stored theme", theme);
} else {
browser.theme.reset();
}
}
restoreLatestThemeIDInLocalStorage();
}
}
function restoreThemeError(err) {
console.debug("(theme) theme restore error", err);
}
}
let btheme = {
colors: {
frame: "#363A68",
toolbar: "#363A68",
tab_text: "#ECF3FF",
},
};
let dtheme = {
colors: {
frame: "#4456B7",
toolbar: "#4456B7",
tab_text: "#ECF3FF",
},
};
async function isMyTheme() {
function hasMatchingColors(theme, targetColors) {
console.debug("(theme) comparison", theme.colors, targetColors.colors);
if (theme.colors === null || targetColors.colors === null) {
return false;
}
return (
theme.colors.frame == targetColors.colors.frame &&
theme.colors.toolbar == targetColors.colors.toolbar &&
theme.colors.tab_text == targetColors.colors.tab_text
);
}
const currentTheme = await browser.theme.getCurrent();
const isLightTheme = hasMatchingColors(currentTheme, dtheme);
const isDarkTheme = hasMatchingColors(currentTheme, btheme);
console.debug(`Is current theme a dynamic theme? ${isLightTheme}`);
console.debug(`Is current theme a browser theme? ${isDarkTheme}`);
return isLightTheme || isDarkTheme;
}

View File

@@ -1,210 +0,0 @@
/**
* @fileoverview I2P Bookmark Manager
* Handles bookmark creation and management for I2P extension toolbar
*/
// Constants for bookmark configuration
const BOOKMARK_CONFIG = {
TOOLBAR_NAME: "I2P Toolbar",
DEFAULT_BOOKMARKS: [
{
title: "I2P Extension Home Page",
getUrl: () => browser.runtime.getURL("home.html"),
},
{
title: "Bittorrent",
getUrl: (host, port) => `http://${host}:${port}/i2psnark`,
},
{
title: "Hidden Services Manager",
getUrl: (host, port) => `http://${host}:${port}/i2ptunnel`,
},
{
title: "Web Mail",
getUrl: (host, port) => `http://${host}:${port}/webmail`,
},
{
title: "I2P Console",
getUrl: (host, port) => `http://${host}:${port}/home`,
},
],
};
/**
* Bookmark Manager class for handling I2P bookmarks
*/
class I2PBookmarkManager {
constructor() {
this.controlHost = control_host();
this.controlPort = control_port();
}
/**
* Creates a bookmark with error handling
* @param {Object} params Bookmark parameters
* @return {Promise<browser.bookmarks.BookmarkTreeNode>}
*/
async createBookmark({ url, title, parentId }) {
try {
const bookmark = await browser.bookmarks.create({ url, title, parentId });
console.info("Created bookmark:", title);
return bookmark;
} catch (error) {
console.error(`Failed to create bookmark ${title} :`, error);
throw error;
}
}
/**
* Creates the I2P toolbar folder
* @param {browser.bookmarks.BookmarkTreeNode} toolbar Parent toolbar node
* @return {Promise<browser.bookmarks.BookmarkTreeNode>}
*/
async createToolbarFolder(toolbar) {
try {
const existing = await browser.bookmarks.search(
BOOKMARK_CONFIG.TOOLBAR_NAME
);
if (existing.length) {
return existing[0];
}
const folder = await this.createBookmark({
title: BOOKMARK_CONFIG.TOOLBAR_NAME,
parentId: toolbar.id,
});
await this.populateToolbar(folder);
return folder;
} catch (error) {
console.error("Failed to create toolbar folder:", error);
throw error;
}
}
/**
* Creates a single default bookmark if it doesn't exist
* @param {Object} bookmark Bookmark configuration
* @param {string} parentId Parent folder ID
*/
async createDefaultBookmark(bookmark, parentId) {
try {
const existing = await browser.bookmarks.search({
title: bookmark.title,
});
if (!existing.length) {
await this.createBookmark({
url: bookmark.getUrl(this.controlHost, this.controlPort),
title: bookmark.title,
parentId,
});
}
} catch (error) {
console.error(
`Failed to create default bookmark ${bookmark.title}:`,
error
);
}
}
/**
* Populates toolbar with default bookmarks
* @param {browser.bookmarks.BookmarkTreeNode} toolbar Toolbar folder node
*/
async populateToolbar(toolbar) {
try {
await Promise.all(
BOOKMARK_CONFIG.DEFAULT_BOOKMARKS.map((bookmark) =>
this.createDefaultBookmark(bookmark, toolbar.id)
)
);
await this.updateBookmarkState(true);
} catch (error) {
console.error("Failed to populate toolbar:", error);
}
}
/**
* Updates bookmark state in storage
* @param {boolean} state New bookmark state
*/
async updateBookmarkState(state) {
try {
await browser.storage.local.set({ bookmarks_state: state });
if (typeof defaultSettings !== "undefined") {
defaultSettings.bookmarks_state = state;
}
} catch (error) {
console.error("Failed to update bookmark state:", error);
}
}
/**
* Initializes bookmark setup
* @returns {Promise<void>}
*/
async initialize() {
try {
const platform = await browser.runtime.getPlatformInfo();
if (platform.os === "android") {
console.info("Skipping bookmark setup on Android");
return;
}
const toolbars = await browser.bookmarks.search({ query: "Toolbar" });
if (!toolbars.length) {
throw new Error("Browser toolbar not found");
}
await this.createToolbarFolder(toolbars[0]);
} catch (error) {
console.error("Bookmark initialization failed:", error);
}
}
/**
* Checks if bookmarks need to be initialized
* @param {Object} state Current bookmark state
*/
async checkInitialization(state = {}) {
if (!state.bookmarks_state) {
await this.initialize();
}
}
}
// Singleton instance
const bookmarkManager = new I2PBookmarkManager();
/**
* Initialize bookmarks system
*/
async function initializeBookmarks() {
if (!browser?.windows) {
console.warn("Browser windows API not available");
return;
}
try {
const state = await browser.storage.local.get("bookmarks_state");
await bookmarkManager.checkInitialization(state);
} catch (error) {
console.error("Failed to initialize bookmarks:", error);
await bookmarkManager.initialize();
}
}
// Setup event listeners
document.addEventListener("DOMContentLoaded", () => {
const bookmarksButton = document.getElementById("bookmarksButton");
if (bookmarksButton) {
bookmarksButton.addEventListener("click", () =>
bookmarkManager.initialize()
);
}
});
// Initialize if browser API is available
if (browser) {
initializeBookmarks();
}

150
cert.js
View File

@@ -1,150 +0,0 @@
/**
* @fileoverview Certificate and Host Verification Module
* Handles I2P certificate verification and host information display
*/
// Constants
const I2P_SUFFIX = ".i2p";
const B32_SUFFIX = "b32.i2p";
const HTTPS_PREFIX = "https";
const HOST_LENGTH_THRESHOLD = 51;
/**
* Message keys for i18n
* @enum {string}
*/
const MessageKeys = {
SITE_LABEL: "siteLabel",
CERT_LABEL: "CertLabel",
IS_HOSTNAME: "isHostName",
IS_BASE32: "isBase32",
CERT_PRESENT: "certPresent",
CERT_ABSENT: "certAbsent",
};
/**
* DOM element IDs
* @enum {string}
*/
const ElementIds = {
TYPE_LABEL: "TypeLabel",
CERT_LABEL: "CertLabel",
ADDRESS_INFO: "AddressInfo",
ADDRESS_CERT_INFO: "AddressCertInfo",
SIGNED_LABEL: "SignedLabel",
};
/**
* Updates element content with i18n message
* @param {string} elementId - Target DOM element ID
* @param {string} messageKey - i18n message key
* @return {void}
*/
function updateContent(elementId, messageKey) {
const element = document.getElementById(elementId);
if (!element) {
console.warn(`Element not found : ${elementId}`);
return;
}
const message = chrome.i18n.getMessage(messageKey);
if (!message) {
console.warn(`Translation missing for: ${messageKey}`);
return;
}
element.textContent = message;
}
/**
* Clears content of specified element
* @param {string} elementId - Target DOM element ID
* @return {void}
*/
function clearContent(elementId) {
const element = document.getElementById(elementId);
if (!element) {
console.warn(`Element not found : ${elementId}`);
return;
}
element.textContent = "";
}
/**
* Extracts I2P host from URL
* @param {string} url - Full URL
* @return {string} I2P host
*/
function extractI2PHost(url) {
const baseHost = url.split(I2P_SUFFIX)[0] + I2P_SUFFIX;
return baseHost;
}
/**
* Determines host type and updates UI
* @param {string} host - I2P host
* @return {void}
*/
function updateHostTypeInfo(host) {
if (host.length < HOST_LENGTH_THRESHOLD) {
updateContent(ElementIds.ADDRESS_INFO, MessageKeys.IS_HOSTNAME);
} else if (host.endsWith(B32_SUFFIX)) {
updateContent(ElementIds.ADDRESS_INFO, MessageKeys.IS_BASE32);
}
}
/**
* Handles certificate verification and UI updates
* @param {string} url - Page URL
* @param {string} host - I2P host
* @return {Promise<void>}
*/
async function handleCertificateVerification(url, host) {
if (url.startsWith(HTTPS_PREFIX)) {
updateContent(ElementIds.ADDRESS_CERT_INFO, MessageKeys.CERT_PRESENT);
try {
const response = await fetch(host);
console.info("Certificate verification completed:", response);
} catch (error) {
console.error("Certificate verification failed:", error);
}
} else {
updateContent(ElementIds.ADDRESS_CERT_INFO, MessageKeys.CERT_ABSENT);
clearContent(ElementIds.SIGNED_LABEL);
}
}
/**
* Processes active tab information
* @param {browser.tabs.Tab[]} tabs - Active tab information
* @return {Promise<void>}
*/
async function processActiveTab(tabs) {
if (!tabs || !tabs[0] || !tabs[0].url) {
console.error("Invalid tab information");
return;
}
const url = tabs[0].url;
const host = extractI2PHost(url);
updateHostTypeInfo(host);
await handleCertificateVerification(url, host);
}
/**
* Initializes the certificate verification UI
* @return {void}
*/
function initializeCertUI() {
updateContent(ElementIds.TYPE_LABEL, MessageKeys.SITE_LABEL);
updateContent(ElementIds.CERT_LABEL, MessageKeys.CERT_LABEL);
browser.tabs
.query({ active: true })
.then(processActiveTab)
.catch((error) => console.error("Tab processing failed:", error));
}
// Initialize certificate verification
initializeCertUI();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 KiB

View File

@@ -1,62 +0,0 @@
function proxy_scheme() {
console.info("(config)Got i2p:", getFuncName());
return getFromStorageProxyScheme();
}
function proxy_host() {
console.info("(config)Got i2p:", getFuncName());
return getFromStorageHost();
}
function proxy_port() {
console.info("(config)Got i2p:", getFuncName());
return getFromStoragePort();
}
function control_host() {
console.info("(config)Got i2p:", getFuncName());
return getFromStorageControlHost();
}
function control_port() {
console.info("(config)Got i2p:", getFuncName());
return getFromStorageControlPort();
}
function rpc_host() {
console.info("(config)Got i2p:", getFuncName());
return getFromStorageRPCHost();
}
function rpc_port() {
console.info("(config)Got i2p:", getFuncName());
return getFromStorageRPCPort();
}
function rpc_path() {
console.info("(config)Got i2p:", getFuncName());
getFromStorageRPCPath();
}
function rpc_pass() {
console.info("(config)Got i2p:", getFuncName());
return getFromStorageRPCPass();
}
function bt_rpc_host() {
console.info("(config)Got i2p:", getFuncName());
return getFromStorageBTRPCHost();
}
function bt_rpc_port() {
console.info("(config)Got i2p:", getFuncName());
return getFromStorageBTRPCPort();
}
function bt_rpc_path() {
console.info("(config)Got i2p:", getFuncName());
return getFromStorageBTRPCPath();
}
function bt_rpc_pass() {
console.info("(config)Got i2p:", getFuncName());
return getFromStorageBTRPCPass();
}
function getFuncName() {
return getFuncName.caller.name;
}
var disable_history = false;

View File

@@ -1,193 +0,0 @@
/**
* @fileoverview I2P Router Console Status Manager
* Handles router console connectivity checking and UI updates
*/
// Constants
const CONSOLE_CONFIG = {
ROUTER_URL: "http://127.0.0.1:7657",
WELCOME_PATH: "/welcome",
FETCH_OPTIONS: {
method: "GET",
cache: "no-store",
redirect: "follow",
},
};
const UI_ELEMENTS = {
ROUTER_STATUS: "router-check",
ROUTER_CLASS: ".routerness",
HIDDEN_CLASS: "hidden",
};
const MESSAGE_KEYS = {
SUCCESS: "consoleSuccessStatus",
FAILURE: "consoleFailedStatus",
};
/**
* UI Manager for handling element visibility
*/
class UIManager {
/**
* Toggle element visibility
* @param {Element|NodeList} elements - Elements to modify
* @param {boolean} show - Whether to show or hide
*/
static toggleVisibility(elements, show) {
try {
if (!elements) {
throw new Error("Elements parameter is null or undefined");
}
const elementArray =
elements instanceof NodeList ? Array.from(elements) : [elements];
elementArray.forEach((element) => {
if (element && element.style !== undefined && element.style !== null) {
const action = show ? "remove" : "add";
element.classList[action](UI_ELEMENTS.HIDDEN_CLASS);
console.debug(`(consoleinfo) ${show ? "showing" : "hiding"} element`);
} else {
console.warn(
"(consoleinfo) Invalid element encountered during visibility toggle"
);
}
});
} catch (error) {
console.error("Visibility toggle failed:", error);
throw error;
}
}
/**
* Update element content by ID
* @param {string} elementId - Target element ID
* @param {string} messageKey - i18n message key
*/
static updateContent(elementId, messageKey) {
try {
const element = document.getElementById(elementId);
if (!element) {
throw new Error(`Element not found : ${elementId}`);
}
element.textContent = chrome.i18n.getMessage(messageKey);
} catch (error) {
console.error("Content update failed:", error);
}
}
/**
* Get elements by selector
* @param {string} selector - CSS selector
* @return {?NodeList}
*/
static getElements(selector) {
try {
return document.querySelectorAll(selector);
} catch (error) {
console.error("Element selection failed:", error);
return null;
}
}
}
/**
* Router Console Manager
*/
class RouterConsoleManager {
/**
* Check router console connectivity
* @return {Promise<void>}
*/
static async checkConsoleStatus() {
console.info("(consoleinfo) Checking router console status");
try {
const response = await fetch(
`${CONSOLE_CONFIG.ROUTER_URL}${CONSOLE_CONFIG.WELCOME_PATH}`,
CONSOLE_CONFIG.FETCH_OPTIONS
);
if (!response.ok) {
throw new Error(`Console response not OK : ${response.status}`);
}
await this.handleConsoleSuccess(response);
} catch (error) {
await this.handleConsoleError(error);
}
}
/**
* Handle successful console connection
* @param {Response} response - Fetch response
*/
static async handleConsoleSuccess(response) {
console.info("(consoleinfo) Router console check successful");
try {
UIManager.updateContent(UI_ELEMENTS.ROUTER_STATUS, MESSAGE_KEYS.SUCCESS);
const routerElements = UIManager.getElements(UI_ELEMENTS.ROUTER_CLASS);
if (routerElements) {
UIManager.toggleVisibility(routerElements, true);
}
} catch (error) {
console.error("Console success handling failed:", error);
}
}
/**
* Handle console connection failure
* @param {Error} error - Connection error
*/
static async handleConsoleError(error) {
console.error("(consoleinfo) Router console check failed:", error);
try {
UIManager.updateContent(UI_ELEMENTS.ROUTER_STATUS, MESSAGE_KEYS.FAILURE);
const routerElements = UIManager.getElements(UI_ELEMENTS.ROUTER_CLASS);
if (routerElements) {
UIManager.toggleVisibility(routerElements, false);
}
} catch (additionalError) {
console.error("Console error handling failed:", additionalError);
}
}
/**
* Initialize console monitoring
*/
static initialize() {
try {
this.checkConsoleStatus();
console.info("(consoleinfo) Router console monitoring initialized");
} catch (error) {
console.error("Console initialization failed:", error);
}
}
}
// Event Listeners
document.addEventListener(
"DOMContentLoaded",
() => {
RouterConsoleManager.initialize();
},
{
passive: true,
capture: false,
}
);
// Export for testing
if (typeof module !== "undefined" && module.exports) {
module.exports = {
RouterConsoleManager,
UIManager,
CONSOLE_CONFIG,
UI_ELEMENTS,
MESSAGE_KEYS,
};
}

View File

@@ -1,71 +0,0 @@
function contentUpdateById(id, message) {
let infoTitle = document.getElementById(id);
let messageContent = chrome.i18n.getMessage(message);
if (infoTitle === null) {
console.log("content error", id, messageContent);
return;
}
infoTitle.textContent = messageContent;
}
// Information Section
contentUpdateById("text-section-header", "extensionName");
contentUpdateById("description", "extensionDescription");
contentUpdateById("i2pbrowser-version", browser.runtime.getManifest().version);
// Control Section
contentUpdateById("controlHeader", "controlHeader");
contentUpdateById("controlExplain", "controlExplain");
contentUpdateById("clear-browser-data", "clearData");
contentUpdateById("clear-desc", "clearDesc");
contentUpdateById("enable-web-rtc", "enableWebRTC");
contentUpdateById("rtcDesc", "rtcDesc");
contentUpdateById("disable-history", "disableHistory");
//contentUpdateById("disable-referers", "disableReferers");
contentUpdateById("histDesc", "histDesc");
// Application Section
contentUpdateById("applicationHeader", "applicationHeader");
contentUpdateById("applicationExplain", "applicationExplain");
contentUpdateById("window-visit-index", "windowVisitHelppage");
contentUpdateById("help", "help");
contentUpdateById("window-visit-router", "windowVisitConsole");
contentUpdateById("routerConsole", "routerConsole");
contentUpdateById("window-visit-homepage", "extensionName");
contentUpdateById("abouthome", "abouthome");
contentUpdateById("window-visit-i2ptunnel", "windowVisitI2ptunnel");
contentUpdateById("i2ptunnel", "i2ptunnel");
contentUpdateById("window-visit-susimail", "windowVisitSusiMail");
contentUpdateById("susimail", "susimail");
contentUpdateById("window-visit-snark", "windowVisitSnark");
contentUpdateById("snark", "snark");
// Homepage Section
contentUpdateById("window-visit-webpage", "windowVisitWebPage");
contentUpdateById("webpage", "help");
contentUpdateById("window-visit-sources", "windowVisitSources");
contentUpdateById("sources", "sources");
contentUpdateById("window-visit-releases", "windowVisitReleases");
contentUpdateById("releases", "releases");
function hide(elements) {
const elems = Array.isArray(elements) ? elements : [elements];
for (let i = 0; i < elems.length; i++) {
const el = elems[i];
if (el.style) {
console.log("(content) hiding");
el.classList.add("hidden");
}
}
}
function unhide(elements) {
const elems = Array.isArray(elements) ? elements : [elements];
elems.forEach((el) => {
if (el.style) {
//el.style.display = "inline-block";
console.log("(content) unhiding");
el.classList.remove("hidden");
}
});
}

View File

@@ -1,161 +0,0 @@
/**
* @fileoverview I2P Container Context Manager
* Handles container tab creation and management for I2P browsing contexts
*/
// Constants
const UI_STRINGS = {
TITLE_PREFACE: chrome.i18n.getMessage("titlePreface"),
API_ERROR_MESSAGE:
"browser.contextualIdentities not available. Check that the privacy.userContext.enabled pref is set to true, and reload the add-on.",
NO_IDENTITIES_MESSAGE: "No identities returned from the API.",
};
const TAB_ACTIONS = {
NEW_TAB: "new-i2p browser tab",
CLOSE_ALL: "close-all i2p browser tabs",
};
const TAB_OPTIONS = [
{
text: "New I2P Browser Tab",
action: TAB_ACTIONS.NEW_TAB,
},
{
text: "Close All I2P Browser Tabs",
action: TAB_ACTIONS.CLOSE_ALL,
},
];
/**
* Handles browser operation errors
* @param {Error} error - Browser operation error
*/
function handleError(error) {
console.error("Container operation failed:", error);
}
/**
* Creates a new tab in specified container window
* @param {Object} windowInfo - Window information
* @param {string} cookieStoreId - Container identity
*/
async function createContainerTab(windowInfo, cookieStoreId) {
try {
await browser.tabs.create({
windowId: windowInfo.id,
url: "about:blank",
cookieStoreId: cookieStoreId,
});
console.info(`Created container tab in window : ${windowInfo.id}`);
} catch (error) {
handleError(error);
}
}
/**
* Handles container tab operations
* @param {Event} event - UI event
*/
async function handleContainerAction(event) {
event.preventDefault();
const { action, identity } = event.target.dataset;
try {
switch (action) {
case TAB_ACTIONS.NEW_TAB:
const window = await browser.windows.create();
await createContainerTab(window, identity);
break;
case TAB_ACTIONS.CLOSE_ALL:
const tabs = await browser.tabs.query({ cookieStoreId: identity });
await browser.tabs.remove(tabs.map((tab) => tab.id));
break;
default:
console.warn("Unknown container action:", action);
}
} catch (error) {
handleError(error);
}
}
/**
* Creates UI elements for container options
* @param {HTMLElement} parentNode - Container for options
* @param {Object} identity - Container identity
*/
function createContainerOptions(parentNode, identity) {
TAB_OPTIONS.forEach((option) => {
const link = document.createElement("a");
Object.assign(link, {
href: "#",
innerText: option.text,
dataset: {
action: option.action,
identity: identity.cookieStoreId,
},
});
link.addEventListener("click", handleContainerAction);
parentNode.appendChild(link);
});
}
/**
* Creates UI element for container identity
* @param {Object} identity - Container identity
* @returns {HTMLElement}
*/
function createIdentityElement(identity) {
const row = document.createElement("div");
const span = document.createElement("div");
span.className = "identity";
span.innerText = identity.name;
row.appendChild(span);
createContainerOptions(row, identity);
return row;
}
/**
* Initializes container UI
* @param {HTMLElement} containerList - Container list element
*/
async function initializeContainerUI(containerList) {
if (!browser.contextualIdentities) {
containerList.innerText = UI_STRINGS.API_ERROR_MESSAGE;
return;
}
try {
const identities = await browser.contextualIdentities.query({
name: UI_STRINGS.TITLE_PREFACE,
});
if (!identities.length) {
containerList.innerText = UI_STRINGS.NO_IDENTITIES_MESSAGE;
return;
}
identities.forEach((identity) => {
const element = createIdentityElement(identity);
containerList.appendChild(element);
console.debug("Added container identity:", identity.name);
});
} catch (error) {
handleError(error);
containerList.innerText = error.message;
}
}
// Initialize container management
const identityList = document.getElementById("identity-list");
if (identityList) {
initializeContainerUI(identityList);
} else {
console.error("Identity list container not found");
}

View File

@@ -1,8 +0,0 @@
i2psetproxy.js for Debian
Please edit this to provide information specific to
this i2psetproxy.js Debian package.
(Automatically generated by debmake Version 4.3.1)
-- idk <hankhill19580@gmail.com> Thu, 01 Aug 2019 00:32:39 -0400

408
debian/changelog vendored
View File

@@ -1,408 +0,0 @@
i2psetproxy.js (2.8.3-1) UNRELEASED; urgency=low
* Fix context recreation bug
-- idk <hankhill19580@gmail.com> Fri, 20 Feb 2025 12:00:00 -0000
i2psetproxy.js (2.8.1-1) UNRELEASED; urgency=low
* 2.8.0/1 release
-- idk <hankhill19580@gmail.com> Fri, 07 Feb 2025 12:00:00 -0000
i2psetproxy.js (2.7.1-1) UNRELEASED; urgency=low
* Make `Referer:` header handling more fine-grained
-- idk <hankhill19580@gmail.com> Fri, 04 Sep 2024 17:38:04 -0400
i2psetproxy.js (2.6.1-1) UNRELEASED; urgency=low
* Fix bug where all local services were routed to the routerconsole container
-- idk <hankhill19580@gmail.com> Sun, 18 Aug 2024 21:20:04 -0400
i2psetproxy.js (2.5.9-1) UNRELEASED; urgency=low
* Minor refactoring, simplifications
-- idk <hankhill19580@gmail.com> Thu, 10 Jul 2024 13:40:40 -0400
i2psetproxy.js (1.49-1) UNRELEASED; urgency=low
* Fix proxy error page load.
* lots of cleanup
-- idk <hankhill19580@gmail.com> Tue, 20 Jun 2023 15:40:40 -0400
i2psetproxy.js (1.47-1) UNRELEASED; urgency=low
* only reset the theme if we're resetting from one we own
-- idk <hankhill19580@gmail.com> Sun, 11 Jun 2023 14:05:08 -0400
i2psetproxy.js (1.45-1) UNRELEASED; urgency=low
* Refactor scrub-and-capture code
* Fix issue where user themes were overwritten
-- idk <hankhill19580@gmail.com> Sat, 10 Jun 2023 23:51:21 -0400
i2psetproxy.js (1.43-1) UNRELEASED; urgency=low
* Fix wrong color pageAction icon
* Add router status to proxy error page
-- idk <hankhill19580@gmail.com> Sun, 24 Oct 2022 09:35:20 -0400
i2psetproxy.js (1.41-1) UNRELEASED; urgency=low
* Fix wrong color pageAction icon
* Add router status to proxy error page
-- idk <hankhill19580@gmail.com> Sun, 24 Oct 2022 09:21:20 -0400
i2psetproxy.js (0.135-1) UNRELEASED; urgency=low
* Style update
* Fix compatibility with third-party themes
* Update text
* Improve translation coverage
* Descriptive proxy error page
-- idk <hankhill19580@gmail.com> Sun, 16 Oct 2022 09:21:20 -0400
i2psetproxy.js (0.133-1) UNRELEASED; urgency=low
* Add machine translations for several languages
-- idk <hankhill19580@gmail.com> Mon, 31 May 2022 16:28:06 -0400
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
-- idk <hankhill19580@gmail.com> Sun, 26 Sep 2021 00:37:22 -0400
i2psetproxy.js (0.111-1) UNRELEASED; urgency=low
* simplify background theme issue fix
-- idk <hankhill19580@gmail.com> Wed, 07 Jul 2021 23:27:27 -0400
i2psetproxy.js (0.109-1) UNRELEASED; urgency=low
* connection interrupted mid release, retry failed validation. Bump and retry
-- idk <hankhill19580@gmail.com> Wed, 07 Jul 2021 22:00:25 -0400
connection interrupted mid release, retry failed validation. Bump and retry
i2psetproxy.js (0.107-1) UNRELEASED; urgency=low
* Small code fixes
* Fix for interference with non-I2P containers
-- idk <hankhill19580@gmail.com> Wed, 07 Jul 2021 22:00:25 -0400
i2psetproxy.js (0.105-1) UNRELEASED; urgency=low
* Add help page for configuring i2pcontrol
* Add help page for configuring i2psnark-rpc
* Update the icons
-- idk <hankhill19580@gmail.com> Wed, 26 May 2021 12:56:56 -0400
i2psetproxy.js (0.103-1) UNRELEASED; urgency=low
* Fix for double-test issue on /home.html page in the extension
* Fix for broken options menu
-- idk <hankhill19580@gmail.com> Wed, 26 May 2021 12:56:56 -0400
i2psetproxy.js (0.101-1) UNRELEASED; urgency=low
* Sweeping changes to styles
* fix for issue when using noscript and visiting susimail
-- idk <hankhill19580@gmail.com> Mon, 24 May 2021 3:41:35 -0400
i2psetproxy.js (0.99-1) UNRELEASED; urgency=low
* Sweeping changes to styles
* fix for issue when using noscript and visiting susimail
-- idk <hankhill19580@gmail.com> Mon, 24 May 2021 2:05:21 -0400
i2psetproxy.js (0.97-1) UNRELEASED; urgency=low
* Fix theme issue, add x-i2p-torrentlocation HEADER support
-- idk <hankhill19580@gmail.com> FRI, 5 FEB 2021 1:02:55 -0400
i2psetproxy.js (0.95-1) UNRELEASED; urgency=low
* Fix github #102 and #103
-- idk <hankhill19580@gmail.com> Sat, 21 DEC 2020 6:15:05 -0400
i2psetproxy.js (0.93-1) UNRELEASED; urgency=low
* Emergency fix of the first one
-- idk <hankhill19580@gmail.com> Sat, 14 DEC 2020 5:18:53 -0400
i2psetproxy.js (0.91-1) UNRELEASED; urgency=low
* Exclude clearnet code hosting sites from scrub checks
-- idk <hankhill19580@gmail.com> Sat, 14 DEC 2020 2:46:23 -0400
i2psetproxy.js (0.89-1) UNRELEASED; urgency=low
* Pages with lots of AJAX requests could trigger a performance degradation
* Improve performance of x-i2p-* headers and meta tags
-- idk <hankhill19580@gmail.com> Sat, 13 DEC 2020 2:22:00 -0400
i2psetproxy.js (0.87-1) UNRELEASED; urgency=low
* Disable searching for i2p sites in non-i2p search engines
* Add contexts for i2pbote and Dispatch
* Remain in tighter control of x-i2p-torrentlocation priority
-- idk <hankhill19580@gmail.com> Sat, 10 NOV 2020 1:33:50 -0400
i2psetproxy.js (0.85-1) UNRELEASED; urgency=low
* Fix a bug which was causing i2psnark to fail to isolate.
-- idk <hankhill19580@gmail.com> Sat, 10 NOV 2020 1:33:50 -0400
i2psetproxy.js (0.83-1) UNRELEASED; urgency=low
* Add a tab for I2P-Native Dispatch
-- idk <hankhill19580@gmail.com> Sat, 10 NOV 2020 22:00:01 -0400
i2psetproxy.js (0.81-1) UNRELEASED; urgency=low
* X-I2P-TorrentLocation header
* Visual tweaks
* Deprecate localhost browser container permanently
* Isolation rules improvements
-- idk <hankhill19580@gmail.com> Sat, 07 NOV 2020 21:34:25 -0400
i2psetproxy.js (0.79-1) UNRELEASED; urgency=low
* Pin application tabs to the front of the tab order
* Refine pageaction behavior
-- idk <hankhill19580@gmail.com> Mon, 24 SEP 2020 20:18:03 -0400
i2psetproxy.js (0.77-1) UNRELEASED; urgency=low
* Implement x-i2p-location header
-- idk <hankhill19580@gmail.com> Mon, 24 SEP 2020 20:18:03 -0400
i2psetproxy.js (0.73-1) UNRELEASED; urgency=low
* Update bookmarks format
* Deprecate WebRTC State Management
-- idk <hankhill19580@gmail.com> Mon, 22 JUN 2020 11:22:37 -0400
i2psetproxy.js (0.73-1) UNRELEASED; urgency=low
* Update bookmarks format
-- idk <hankhill19580@gmail.com> Mon, 22 JUN 2020 19:21:23 -0400
i2psetproxy.js (0.71-1) UNRELEASED; urgency=low
* Fix incomplete bugfix from 0.69
-- idk <hankhill19580@gmail.com> Tue, 24 MAR 2020 0:19:59 -0400
i2psetproxy.js (0.71-1) UNRELEASED; urgency=low
* Fix incomplete bugfix from 0.69
-- idk <hankhill19580@gmail.com> Tue, 24 MAR 2020 0:19:59 -0400
i2psetproxy.js (0.69-1) UNRELEASED; urgency=low
* Add MuWire contextual ID
* Fix bug occurring on certain modded I2P installs
-- idk <hankhill19580@gmail.com> Tue, 24 MAR 2020 0:12:02 -0400
i2psetproxy.js (0.67-1) UNRELEASED; urgency=low
* Tweak some default settings that should have gone into 65
-- idk <hankhill19580@gmail.com> Tue, 17 MAR 2020 22:58:55 -0400
i2psetproxy.js (0.65-1) UNRELEASED; urgency=low
* Initial prototype of certs implementation
* Use "pinned apptabs" to minimize the number of tabs occupied by an app
* Get ready for self-hosted updates but with bittorrent because it's cooler
-- idk <hankhill19580@gmail.com> Tue, 17 MAR 2020 22:58:55 -0400
i2psetproxy.js (0.63-1) UNRELEASED; urgency=low
* other containerizers bugfix
-- idk <hankhill19580@gmail.com> Mon, 02 MAR 2020 17:54:26 -0400
i2psetproxy.js (0.61-1) UNRELEASED; urgency=low
* other containerizers bugfix
-- idk <hankhill19580@gmail.com> Mon, 02 MAR 2020 17:46:24 -0400
i2psetproxy.js (0.59-1) UNRELEASED; urgency=low
* transmission-rpc based torrent controls
* bugfixes
-- idk <hankhill19580@gmail.com> Tue, 25 FEB 2020 20:52:19 -0400
i2psetproxy.js (0.57-1) UNRELEASED; urgency=low
* Snowflake compatibility
* Lots of small compatibility fixes
* More linter errors
* Make it multilingual again
* Distribute a torrent and a magnet link with the plugin of the plugin
-- idk <hankhill19580@gmail.com> Thu, 4 JAN 2020 16:43:58 -0400
i2psetproxy.js (0.55-1) UNRELEASED; urgency=low
* Get rid of Web Browsing context launcher
* Fix linter errors
* Tolerate themes
* Tolerate other containerizers
-- idk <hankhill19580@gmail.com> Thu, 2 JAN 2020 16:47:33 -0400
i2psetproxy.js (0.53-1) UNRELEASED; urgency=low
* Quick Fix
-- idk <hankhill19580@gmail.com> Sat, 23 NOV 2019 20:11:30 -0400
i2psetproxy.js (0.51-1) UNRELEASED; urgency=low
* Numerous code cleanups, compatibility fixes
* enable-disable history
* better homepage, better control panel, saner options
-- idk <hankhill19580@gmail.com> Sat, 23 NOV 2019 20:10:30 -0400
i2psetproxy.js (0.49-1) UNRELEASED; urgency=low
* fix tabs
-- idk <hankhill19580@gmail.com> Sat, 23 NOV 2019 22:51:11 -0400
i2psetproxy.js (0.47-1) UNRELEASED; urgency=low
* Improve android compatibility
* Improve code organization
* Partial protocol handlers implementation
-- idk <hankhill19580@gmail.com> Sat, 23 NOV 2019 18:53:11 -0400
i2psetproxy.js (0.45-1) UNRELEASED; urgency=low
* Improve the user interface a whole bunch
-- idk <hankhill19580@gmail.com> Fri, 22 NOV 2019 18:17:33 -0400
i2psetproxy.js (0.43-1) UNRELEASED; urgency=low
* Contextualize All the Things
-- idk <hankhill19580@gmail.com> Mon, 11 OCT 2019 12:41:33 -0400
i2psetproxy.js (0.41-1) UNRELEASED; urgency=low
* Only open tabs, not windows
* Optionally enable WebRTC
-- idk <hankhill19580@gmail.com> Thu, 31 OCT 2019 12:41:33 -0400
i2psetproxy.js (0.37-1) UNRELEASED; urgency=low
* Honor contextual ID when deleting history
-- idk <hankhill19580@gmail.com> Thu, 17 OCT 2019 00:52:19 -0400
i2psetproxy.js (0.35-1) UNRELEASED; urgency=low
* Automatically activate contexts
-- idk <hankhill19580@gmail.com> Thu, 01 Aug 2019 00:32:39 -0400
i2psetproxy.js (0.31-1) UNRELEASED; urgency=low
* Initial release. Closes: #nnnn
<nnnn is the bug number of your ITP>
-- idk <hankhill19580@gmail.com> Thu, 01 Aug 2019 00:32:39 -0400

1
debian/compat vendored
View File

@@ -1 +0,0 @@
11

17
debian/control vendored
View File

@@ -1,17 +0,0 @@
Source: i2psetproxy.js
Section: unknown
Priority: optional
Maintainer: idk <hankhill19580@gmail.com>
Build-Depends: debhelper (>=11~)
Standards-Version: 4.1.4
Homepage: https://github.com/eyedeekay/i2psetproxy.js
Package: i2psetproxy.js
Architecture: any
Multi-Arch: foreign
Depends: ${misc:Depends}, ${shlibs:Depends}
Description: Plugin for configuring i2p in Firefox and Chromium
This is a webextension which safely configures a Browser on the
Debian operating system to use I2P. i2psetproxy.js users form
their own anonymity set, like TAILS users or Brave users do on
the Tor network.

59
debian/copyright vendored
View File

@@ -1,59 +0,0 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: i2psetproxy.js
Source: https://github.com/eyedeekay/i2psetproxy.js
Files: .gitignore
Makefile
README.md
_locales/en/messages.json
background.js
content.js
context.js
.circleci/config.yml
experiments/i2ptab.md
experiments/tunblink.md
i2psetproxy.js.png
i2psetproxy.js@eyedeekay.github.io.xpi
icons/toopie.png
info.css
info.js
manifest.json
options/options.css
options/options.js
options/options.html
package-lock.json
platform.js
privacy.js
proxy.js
scrub.js
window.html
debian/*
*
Copyright: MIT
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Files: chromium/browser-polyfill.js
Copyright: MPL in: chromium/LICENSE
License: MPL-2.0
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
.

View File

@@ -1 +0,0 @@
# You must remove unused comment lines for the released package.

6
debian/postinst vendored
View File

@@ -1,6 +0,0 @@
#! /bin/sh
ln -sf /usr/share/webext/i2ppb@eyedeekay.github.io \
/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/i2ppb@eyedeekay.github.io
touch /usr/share/webext/i2ppb@eyedeekay.github.io/manifest.json

9
debian/rules vendored
View File

@@ -1,9 +0,0 @@
#!/usr/bin/make -f
%:
dh $@
export PREFIX=debian/i2psetproxy.js/usr
override_dh_auto_install:
make install

View File

@@ -1 +0,0 @@
3.0 (quilt)

View File

@@ -1,3 +0,0 @@
i2psetproxy.js.gif
smartlander.pdf
browser.pdf

View File

@@ -1,2 +0,0 @@
#abort-on-upstream-changes
#unapply-patches

1
debian/watch vendored
View File

@@ -1 +0,0 @@
version=3

6
desc
View File

@@ -1,6 +0,0 @@
I2P in Private Browsing Mode
============================
A simple plugin for configuring a Firefox based web browser to isolate I2P
Browsing to a single contextual identity, thus creating an I2P in Private
Browsing mode. It requires the use of a pre-installed I2P Router.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 351 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 KiB

View File

@@ -1 +0,0 @@
0.9.43

View File

@@ -1,30 +0,0 @@
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;
}
function handlerSetup(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, {
urls: ['<all_urls>'],
});
*/

308
home.css
View File

@@ -1,308 +0,0 @@
* {
padding: 0;
margin: 0
}
html {
margin: 0 4%;
padding: 0 20px;
min-height: 100%;
background: #9ab;
background: #fff;
scrollbar-color: #bcd #789
}
body {
margin: 0;
padding: 20px 40px;
font-family: Open Sans,Noto Sans,Segoe UI,sans-serif;
font-size: 12pt;
color: #fff;
text-decoration: none;
word-wrap: break-word;
background: #f2f2f2
}
h1,
h2,
h3,
h4 {
display: block;
font-weight: 700
}
h1 {
text-transform: uppercase;
font-weight: 900;
font-size: 200%
}
h2 {
font-size: 140%
}
h3 {
font-size: 120%
}
h4 {
margin-bottom: 5px;
text-align: right;
text-transform: none;
font-size: 90%;
font-weight: 600;
font-style: italic
}
p {
margin-bottom: 15px;
width: 100%;
line-height: 1.4;
word-wrap: break-word;
text-align: justify;
text-decoration: none
}
ul {
margin: 10px 20px;
list-style: none
}
li {
margin-left: 0;
padding: 12px 15px 20px;
width: calc(100% - 40px);
text-align: justify;
border: 1px solid #363a68;
border-radius: 25px;
box-shadow: inset 0 0 0 1px #363a68;
background: #4456b7
}
li li {
padding-bottom: 0;
width: calc(100% - 40px);
text-align: left;
border: none;
border-top: 1px solid #9ab;
box-shadow: none
}
li li:first-of-type {
margin-top: 15px;
border-top: none
}
li a:first-of-type {
display: block;
width: 100%
}
#applicationExplain {
float: unset
}
li+li {
margin-top: 15px
}
h3+ul,
ul+h2,
ul+h3 {
margin-top: 20px
}
a,
button {
color: #f9f7dc;
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0
}
.applicationDesc {
color: #fff;
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0
}
a:hover,
button:hover {
color: #ff9e7a;
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0
}
button {
border: none;
cursor: pointer;
color: #fff;
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0;
background: unset
}
.background {
}
.content {
margin: 1.5rem;
padding: 1rem;
min-height: 3rem;
min-width: 95%;
display: inline-block;
border: 1px solid #363a68;
border-radius: 25px;
background: #363a68
}
#header,
.application-info,
.browser-info,
.extended-info,
.search-info {
margin-top: 1.5rem;
padding: 1rem;
min-height: 3rem;
min-width: 95%;
display: inline-block;
border: 1px solid #787ff6;
border-radius: 25px;
box-shadow: inset 0 0 0 1px #787ff6,0 0 1px #ccc;
background: #363a68
}
.showhider {
margin-right: auto;
padding: 0!important;
text-transform: uppercase;
background: none!important;
border: none;
width: 90%;
color: #fff;
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0;
text-align: left
}
#links .showhider {
font-size: 25px
}
.section-header {
display: flex;
flex-direction: row;
margin-bottom: 80px
}
#readyness,
#routerness {
padding-top: 1rem;
padding-bottom: 1rem;
margin: 1rem;
width: 42%;
min-width: 42%
}
#onboarding {
min-height: 5rem;
padding: .5rem;
margin: .5rem;
margin-top: 4rem;
width: 42%;
min-width: 42%;
font-size: 2rem;
background: #4456b7;
text-align: center!important;
border: 2px solid #787ff6;
border-radius: 25px;
float: left;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
}
#i2pbrowser-description {
padding-top: 1rem;
padding-bottom: 1rem;
width: 50%;
min-width: 50%;
display: inline-block
}
#linksExplain {
min-height: 5rem;
padding: .5rem;
margin: .5rem;
width: 100%;
min-width: 100%
}
#applicationExplain,
#controlExplain {
min-height: 5rem;
padding: .5rem;
margin: .5rem;
width: 98%;
min-width: 98%
}
#proxyReady {
min-height: 3rem;
padding: .5rem;
margin: .2rem;
width: 38%;
min-width: 38%;
display: inline-block;
background: #363a68;
float: right;
text-align: center!important;
border: 2px solid #787ff6;
border-radius: 25px;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
}
#proxyUnready {
min-height: 3rem;
padding: .5rem;
margin: .2rem;
width: 38%;
min-width: 38%;
display: inline-block;
background: #363a68;
float: right;
text-align: center!important;
border: 2px solid #787ff6;
border-radius: 25px
}
#consoleOn {
min-height: 3rem;
padding: .5rem;
margin: .2rem;
width: 38%;
min-width: 38%;
display: inline-block;
float: left;
text-align: center!important;
border: 1px solid #f7e59a;
border-radius: 2px;
background: #f7e59a;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
}
.onboardingContent {
font-size: .8rem!important;
text-align: left;
display: none
}
#info-content {
display: none
}
.consoleOn:hover #proxy-check,
.proxyReady:hover #proxy-check {
visibility: visible;
opacity: 1
}
img {
max-width: 100%
}
img.readyness {
height: 100%;
width: auto
}
@media only screen and (max-width: 399px) {
.application-info {
display: none
}
}
@media screen and (max-width: 1200px) {
body {
font-size: 10.5pt
}
}
video {
width: 100%
}
.hidden {
visibility: none;
display: none
}
.application-info {
min-width: 45%;
max-width: 45%;
float: right
}

126
home.html
View File

@@ -1,126 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link href="home.css" rel="stylesheet">
<link href="search.css" rel="stylesheet">
<link href="sidebar.css" rel="stylesheet">
<title>
</title>
</head>
<body>
<!--<div>-->
<div class='background'>
<div class='content'>
<div class="text-section-header">
<img height="30px" src="icons/i2plogo.png" width="30px">
<h1 id="text-section-header">I2P Browsing</h1>
</div>
<div id="i2pbrowser-version">
</div>
<div id="i2pbrowser-description">
<p id="description">I2P network browsing made easy.</p>
</div>
<div id="readyness">
<div class="hideIfI2PProxyOff" id="readyness">
<img class="readyness" src="icons/local_up.png"> <span id="proxy-check">Proxy is ready.</span>
</div>
<div class="hideIfI2PProxyOff" id="visit-url">
<form action="" method="get">
<input id="url-query" name="query" placeholder="Open a URL in an I2P tab:" type="search"> <input id="url-submit" text="Submit" type="submit">
</form>
</div>
</div>
<div class="hideIfI2PConsoleOff" id="onboarding">
<h3 id="onboardingTitle">New to I2P? Learn more here.</h3>
<button class="showhider" id="onboardingButtonZero">Protect your Privacy</button>
<p class="onboardingContent" id="onboardingContentZero">I2P Browser allows you to surf the internet using the private and secure I2P network. When using it, you are protected against tracking, surveillance, and censorship as a first-class participant in the I2P network. I2P Browser isolates cookies and deletes your browser history after your session. These modifications ensure your privacy and security are protected in the browser.</p>
<button class="showhider" id="onboardingButtonOne">Configure your Experience</button>
<p class="onboardingContent" id="onboardingContentOne">We also provide you with additional settings for bumping up your browser security. Our Security Settings allow you to block elements that could be used to attack your computer. Click below to see what the different options do. Note: By default, NoScript and HTTPS Everywhere are not included on the toolbar, but you can customize your toolbar to add them. With all the security and privacy features provided by I2P, your experience while browsing the internet may be a little different. Things may be a bit slower, and depending on your security level, some elements may not work or load. You may also be asked to prove you are a human and not a robot.</p>
<button class="showhider" id="onboardingButtonTwo">Share Files</button>
<p class="onboardingContent" id="onboardingContentTwo">I2P is capable of using peer-to-peer applications like BitTorrent, protecting your identity when you share files. Our anonymous bittorrent client is available in the browser.</p>
<button class="showhider" id="onboardingButtonThree">Hidden e-mail</button>
<p class="onboardingContent" id="onboardingContentThree">There is also an anonymous e-mail service available inside of I2P, which is accessible from our browser via the menu directly below.</p>
<button class="showhider" id="onboardingButtonFour">Browsing the Web</button>
<p class="onboardingContent" id="onboardingContentFour">This extension works automatically when you are browsing I2P sites. If you want to use I2P as a proxy to non-I2P sites, use the I2P In Private Browsing button in the toolbar and click New I2P Browser Tab to switch to I2P Browsing in a new tab.</p>
<button class="showhider" id="onboardingButtonFive">Experience Tips</button>
<p class="onboardingContent" id="onboardingContentFive">With all the security and privacy features provided by I2P, your experience while browsing the internet may be a little different. Things may be a bit slower, and depending on your security level, some elements may not work or load. You may also be asked to prove you are a human and not a robot.</p>
</div>
<!--<p class="hideIfI2POn">&aboutI2p.warn_not_running; <a href="about:i2p">&aboutI2p.refresh_text;</a> &aboutI2p.reccommend_not_running;</p>-->
<div class="application-info">
<p class="hideIfI2PConsoleOff">
</p>
<h3 id="applicationHeader">Applications</h3>
<p id="applicationExplain">These applications use I2P to provide them with security and privacy.</p>
<ul>
<li class="application">
<a class="applicationName" href="http://127.0.0.1:7657/" id="window-visit-router">Router Console</a> <span class="applicationDesc" id="routerConsole">The entrypoint for all other I2P applications is the I2P Router Console. To visit it, click here.</span>
</li>
<li class="application">
<a class="applicationName" href="http://127.0.0.1:7657/i2ptunnel" id="window-visit-i2ptunnel">Hidden Services Manager</a> <span class="applicationDesc" id="i2ptunnel">I2P has a web-based interface for configuring .i2p services like web sites, to set up your own web sites, go here:</span>
</li>
<li class="application">
<a class="applicationName" href="http://127.0.0.1:7657/susimail" id="window-visit-susimail">E-Mail</a> <span class="applicationDesc" id="susimail">I2P also bundles a webmail client which can be used to access in-I2P e-mail. To use it, go here:</span>
</li>
<li class="application">
<a class="applicationName" href="http://127.0.0.1:7657/i2psnark" id="window-visit-snark">BitTorrent</a> <span class="applicationDesc" id="snark">I2P is capable of anonymous Peer-to-Peer file sharing, to use the built-in bittorrent client go here:</span>
</li>
</ul>
<p>
</p>
</div>
<div class="extended-info">
<button class="showhider" id="fliplinks">Extension and I2P Resources</button>
<div id="info-content">
<p id="linksExplain">If you want to get more information about I2P, you can visit these links.</p>
<p>
</p>
<ul>
<li class="application">
<a href="/index.html" id="window-visit-index">Webextension Homepage:</a> <span class="applicationDesc" id="webpage">More information is available here.</span>
</li>
<li class="application">
<a href="http://git.idk.i2p/idk/I2P-in-Private-Browsing-Mode-Firefox" id="window-visit-sources">Source Code:</a> <span class="applicationDesc" id="sources">Browse the source of this webextension or contribute here.</span>
</li>
<li class="application">
<a href="http://git.idk.i2p/idk/I2P-in-Private-Browsing-Mode-Firefox/-/releases" id="window-visit-releases">Releases:</a> <span class="applicationDesc" id="releases">Check for new releases here.</span>
</li>
<li class="application">
<a href="http://i2p-projekt.i2p/" id="window-visit-i2p" target="_blank">I2P Project Homepage:</a> <span class="applicationDesc" id="i2ppage">More information is available here.</span>
</li>
</ul>
<p>
</p>
</div>
</div>
</div>
</div>
<script src="home.js" type="text/javascript"></script>
<script src="info.js" type="text/javascript"></script>
<script src="messages.js" type="text/javascript"></script>
<script src="content.js" type="text/javascript"></script>
<script src="i2pd.js"></script>
<script src="proxyinfo.js" type="text/javascript"></script>
</body>
</html>

27
home.js
View File

@@ -1,27 +0,0 @@
document.addEventListener("click", (clickEvent) => {
if (clickEvent.target.id === "onboardingButtonZero") {
flipVisibility("onboardingContentZero");
} else if (clickEvent.target.id === "onboardingButtonOne") {
flipVisibility("onboardingContentOne");
} else if (clickEvent.target.id === "onboardingButtonTwo") {
flipVisibility("onboardingContentTwo");
} else if (clickEvent.target.id === "onboardingButtonThree") {
flipVisibility("onboardingContentThree");
} else if (clickEvent.target.id === "onboardingButtonFour") {
flipVisibility("onboardingContentFour");
} else if (clickEvent.target.id === "onboardingButtonFive") {
flipVisibility("onboardingContentFive");
} else if (clickEvent.target.id === "fliplinks") {
flipVisibility("info-content");
}
});
function flipVisibility(div) {
console.log("(home) seeking flippable", div);
let flippable = document.getElementById(div);
if (flippable.style.display !== "block") {
flippable.style.display = "block";
} else {
flippable.style.display = "none";
}
}

249
host.js
View File

@@ -1,249 +0,0 @@
/**
* @fileoverview I2P Host Management Module
* Handles host verification, routing, and application paths for I2P browser extension
*/
// Constants for URL patterns and ports
const URL_PATTERNS = {
I2P_SUFFIX: ".i2p",
PROXY_HOST: "proxy.i2p",
LOCALHOST: ["localhost", "127.0.0.1"],
PROTOCOL_PREFIX: "ext+rc:",
};
const PORT_APPLICATIONS = {
TOR: "7695",
BLOG: "8084",
IRC: "7669",
};
const ROUTER_PATHS = {
TUNNEL_MGR: ["i2ptunnelmgr", "i2ptunnel"],
TORRENT: ["i2psnark", "torrents", "transmission", "tracker"],
MAIL: ["webmail", "susimail"],
MUWIRE: ["MuWire"],
BOTE: ["i2pbote"],
CONSOLE: ["home", "console", "dns", "susidns", "config", "sitemap", ""],
};
/**
* Validates and processes URLs for host checking
* @param {string|URL|Object} urlInput - URL to process
* @return {URL} Processed URL object
* @throws {Error} If URL is invalid
*/
function processURL(urlInput) {
try {
if (typeof urlInput === "string") {
if (!urlInput.startsWith("http")) {
urlInput = "http://" + urlInput;
}
return new URL(urlInput);
}
if (urlInput instanceof URL) {
return urlInput;
}
return new URL(urlInput.url);
} catch (error) {
console.error("Invalid URL processing:", error);
throw new Error("Invalid URL format");
}
}
/**
* Checks if request is for proxy host
* @param {Object} requestDetails - Request details object
* @return {boolean}
*/
function isProxyHost(requestDetails) {
try {
const requestUrl = processURL(requestDetails);
const isProxy = requestUrl.hostname === URL_PATTERNS.PROXY_HOST;
console.debug("(proxy) proxyinfo check:", requestUrl.hostname, isProxy);
return isProxy;
} catch (error) {
console.error("Proxy host check failed:", error);
return false;
}
}
/**
* Validates if URL points to localhost
* @param {string|URL} url
* @return {string|false} Host:port if local, false otherwise
*/
function isLocalHost(url) {
try {
const requestUrl = processURL(url);
if (URL_PATTERNS.LOCALHOST.includes(requestUrl.hostname)) {
return `${requestUrl.hostname}:${requestUrl.port}`;
}
return false;
} catch (error) {
console.error("Local host check failed:", error);
return false;
}
}
/**
* Standardizes localhost representation
* @param {string|URL} url
* @return {string}
*/
function tidyLocalHost(url) {
const hostPort = isLocalHost(url);
if (hostPort) {
return hostPort.replace("127.0.0.1", "localhost");
}
const processedUrl = processURL(url);
return `${processedUrl.hostname}:${processedUrl.port}`;
}
/**
* Service-specific host checks
* @param {string|URL} url
* @param {string} port
* @param {string} service
* @return {string|false}
*/
function checkServiceHost(url, port, service) {
const host = isLocalHost(url);
if (!host) {
return false;
}
return host.includes(` : ${port}`) ? service : false;
}
const isTorHost = (url) => checkServiceHost(url, PORT_APPLICATIONS.TOR, "tor");
const isBlogHost = (url) =>
checkServiceHost(url, PORT_APPLICATIONS.BLOG, "blog");
const isIRCHost = (url) => checkServiceHost(url, PORT_APPLICATIONS.IRC, "irc");
/**
* Verifies if request comes from extension
* @param {Object} url - Request URL object
* @return {boolean}
*/
function isExtensionHost(url) {
const extensionPrefix = browser.runtime
.getURL("")
.replace("moz-extension://", "")
.replace("/", "");
const checkUrl = (sourceUrl) => {
if (!sourceUrl) return false;
return sourceUrl
.replace("moz-extension://", "")
.replace("/", "")
.startsWith(extensionPrefix);
};
return checkUrl(url.originUrl) || checkUrl(url.documentUrl);
}
/**
* Extracts I2P hostname from URL
* @param {string|URL} url
* @returns {string|false}
*/
function i2pHostName(url) {
try {
const requestUrl = processURL(url);
return requestUrl.host.endsWith(URL_PATTERNS.I2P_SUFFIX)
? requestUrl.host
: false;
} catch (error) {
console.error("I2P hostname extraction failed:", error);
return false;
}
}
/**
* Validates I2P host
* @param {Object} url
* @returns {boolean}
*/
function i2pHost(url) {
if (isProxyHost(url)) {
console.warn("(host) proxy.i2p detected");
return false;
}
const requestUrl = processURL(url.url);
return requestUrl.hostname.endsWith(URL_PATTERNS.I2P_SUFFIX);
}
/**
* Gets first path element from URL
* @param {string|URL} url
* @returns {string}
*/
function getFirstPathElement(url) {
const requestUrl = processURL(url);
const path = requestUrl.pathname.replace(/^\/+/, "");
return path.split("/")[0];
}
/**
* Identifies application from path
* @param {string|URL} url
* @returns {string|boolean}
*/
function getPathApplication(url) {
const path = getFirstPathElement(url);
if (ROUTER_PATHS.TUNNEL_MGR.includes(path)) return "i2ptunnelmgr";
if (ROUTER_PATHS.TORRENT.includes(path)) return "i2psnark";
if (ROUTER_PATHS.MAIL.includes(path)) return "webmail";
if (path.startsWith("MuWire")) return "muwire";
if (path.startsWith("i2pbote")) return "i2pbote";
if (ROUTER_PATHS.CONSOLE.includes(path)) return "routerconsole";
console.warn("(host) unknown path:", path);
return true;
}
/**
* Verifies router host status
* @param {string|URL} url
* @returns {string|boolean}
*/
function isRouterHost(url) {
try {
const protocolUrl = identifyProtocolHandler(url);
if (protocolUrl) {
return isRouterHost(protocolUrl);
}
const requestUrl = processURL(url);
const { hostname, port } = requestUrl;
const controlHost = control_host();
const controlPort = control_port();
if (
tidyLocalHost(`${hostname}:${port}`) ===
tidyLocalHost(`${controlHost}:${controlPort}`)
) {
return getPathApplication(url);
}
return false;
} catch (error) {
console.error("Router host check failed:", error);
return false;
}
}
/**
* Identifies protocol handler in URL
* @param {string} url
* @returns {string|false}
*/
function identifyProtocolHandler(url) {
const encoded = encodeURIComponent(URL_PATTERNS.PROTOCOL_PREFIX);
if (url.includes(encoded)) {
return url.replace(encoded, "");
}
if (url.includes(URL_PATTERNS.PROTOCOL_PREFIX)) {
return url.replace(URL_PATTERNS.PROTOCOL_PREFIX, "");
}
return false;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

12
i2pd.js
View File

@@ -1,12 +0,0 @@
// stuff required specifically to be compatible with i2pd
//TODO: Don't hard-code this.
fetch("http://127.0.0.1:7657/themes/console/light/images/i2plogo.png")
.then((myJson) => {
var consoleLinks = document.querySelectorAll(".application-info");
unhide(consoleLinks);
})
.catch((error) => {
var consoleLinks = document.querySelectorAll(".application-info");
hide(consoleLinks);
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 327 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="restart.svg"
id="svg22"
version="1.1"
viewBox="0 0 512 512"
role="img"
class="svg-inline--fa fa-sync-alt fa-w-16"
data-icon="sync-alt"
data-prefix="fas"
focusable="false"
aria-hidden="true">
<metadata
id="metadata28">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs26" />
<sodipodi:namedview
inkscape:current-layer="svg22"
inkscape:window-maximized="1"
inkscape:window-y="31"
inkscape:window-x="0"
inkscape:cy="256"
inkscape:cx="256"
inkscape:zoom="1.6757812"
showgrid="false"
id="namedview24"
inkscape:window-height="1026"
inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<path
style="fill:#526bce;fill-opacity:1"
id="path20"
d="M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"
fill="currentColor" />
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
sodipodi:docname="shutdown.svg"
id="svg32"
version="1.1"
viewBox="0 0 512 512"
role="img"
class="svg-inline--fa fa-power-off fa-w-16"
data-icon="power-off"
data-prefix="fas"
focusable="false"
aria-hidden="true">
<metadata
id="metadata38">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs36" />
<sodipodi:namedview
inkscape:current-layer="svg32"
inkscape:window-maximized="1"
inkscape:window-y="31"
inkscape:window-x="0"
inkscape:cy="256"
inkscape:cx="256"
inkscape:zoom="1.6757812"
showgrid="false"
id="namedview34"
inkscape:window-height="1026"
inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<path
style="fill:#526bce;fill-opacity:1"
id="path30"
d="M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z"
fill="currentColor" />
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,238 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<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>
<div class="content" id="browserpanel">
<h1>I2P in Private Browsing Mode(Firefox-Only)</h1>
<ul>
<li>
<p><strong>This extension requires a running I2P Router on the Host System</strong>
</p>
</li>
<li>
<p><a href="https://geti2p.net/en/download/easyinstall"><strong>This extension comes pre-installed in the Easy-Install Beta for Windows</strong></a>
</p>
</li>
</ul>
<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>
<p>This browser extension does not collect any personal information. It requires access to local storage and browsing data permissions in order to delete them when directed to by the user. This browser extension does not transmit any information to any third party, nor will it, ever.</p>
<p>This browser extension cannot influence telemetry carried out by browser vendors to determine performance in their distribution channels, nor can it mitigate any other browser vendor telemetry.</p>
<p>This browser extension is entirely Free, Open-Source software.</p>
<h2>Installation(Cross-Platform):</h2>
<p>For desktop users this addon is available from addons.mozilla.org, where you 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>
<h3>Setting the Homepage</h3>
<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>
<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>
<pre><code> sudo apt install ../i2psetproxy.js_*.deb
</code></pre>
<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>
<ul>
<li>
<a href="magnet:?xl=1246magnetsubdn=i2ppb%40eyedeekay.github.io.xpi.torrentmagnetsubxt=urn:tree:tiger:eyme2fkldmntehx4m7ujho6fgxklugx2bfsnztimagnetsubxt=urn:ed2k:1bd6f65a3dc2027c9ac265da2c61e6d6magnetsubxt=urn:aich:t7hfnrsgwjjeh5nctj5qe7kwaclnahbc">Magnet Link</a>
</li>
<li>
<a href="./i2ppb@eyedeekay.github.io.xpi.torrent">Get the .torrent file</a>
</li>
</ul>
<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 alt="Landing page" src="lander.png" 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 alt="Menu" src="menu.png" 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>
<h3>Features</h3>
<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 alt="Visiting i2p-projekt.i2p" src="i2psetproxy.js.png" 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 alt="Visiting webmail" src="susimail.png" 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 alt="Visiting i2ptunnel" src="i2ptunnel.png" title="">
</li>
<li>[ready] <strong>Provide</strong> help in a variety of languages.</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>
</div>
</body>
</html>

View File

@@ -1,70 +0,0 @@
body,
html {
width: 600px
}
.panel {
margin: 5px;
width: 500px
}
.panel-section-header {
width: 500px
}
#text-section-torrents-header {
width: 500px
}
span.identity {
width: 500px;
display: inline-block;
margin-left: 1em
}
figcaption {
display: inline-block
}
.section-header {
margin-bottom: 8px
}
p {
font-size: 12px
}
h1 {
font-size: 25px
}
h2,
h3 {
font-size: 18px
}
h4 {
font-size: 13px!important
}
#links .showhider {
font-size: 18px
}
#onboarding {
font-size: 2rem
}
img.readyness {
height: 2rem
}
#proxyUnready {
min-height: 2rem
}
#proxyReady {
min-height: 2rem
}
#consoleOn {
min-height: 2rem
}
#torrentpanel {
display: none
}
.torrent-progress {
width: 90%
}
.tabicon {
width: 32px
}
.application-info {
min-width: unset;
max-width: unset;
float: right
}

333
info.js
View File

@@ -1,333 +0,0 @@
/**
* @fileoverview I2P Browser Information Manager
* Handles browser settings, privacy features, and navigation for I2P extension
*/
// Constants
const CONFIG = {
TITLE_PREFACE: chrome.i18n.getMessage("titlePreface"),
ROUTER: {
DEFAULT_HOST: "127.0.0.1",
DEFAULT_PORT: "7657",
},
SNOWFLAKE_ID: "{b11bea1f-a888-4332-8d8a-cec2be7d24b9}",
UPDATE_INTERVAL: 0.2 * 60 * 1000,
IRC_URL: "http://127.0.0.1:7669",
};
const UI_ELEMENTS = {
PANELS: {
BROWSER: "browserpanel",
TORRENT: "torrentpanel",
},
LISTS: {
PEERS: "label-peers-list",
BANDWIDTH: "label-bandwidth-list",
},
};
/**
* Privacy Manager for handling browser privacy settings
*/
class PrivacyManagerInfo {
/**
* Check WebRTC peer connection status
*/
static async checkPeerConnection() {
try {
const { value: webrtc } =
await browser.privacy.network.peerConnectionEnabled.get({});
const webrtcToggle = document.getElementById("enable-web-rtc");
if (webrtcToggle) {
webrtcToggle.checked = webrtc;
}
console.info("(info) WebRTC status:", webrtc);
} catch (error) {
console.error("WebRTC check failed:", error);
}
}
/**
* Check Snowflake plugin status
*/
static async checkSnowflake() {
try {
const snowflake = await browser.management.get(CONFIG.SNOWFLAKE_ID);
console.info("(info) Snowflake plugin found:", snowflake);
await this.assurePeerConnection();
} catch (error) {
console.info("(info) Snowflake not found:", error);
}
}
/**
* Check history settings
*/
static async checkHistory() {
try {
const { disable_history = false } = await browser.storage.local.get(
"disable_history"
);
const historyToggle = document.getElementById("disable-history");
if (historyToggle) {
historyToggle.checked = disable_history;
}
console.info("(info) History disabled:", disable_history);
} catch (error) {
console.error("History check failed:", error);
}
}
/**
* Check referer settings
*/
static async checkReferer() {
try {
const { disable_referer = false } = await browser.storage.local.get(
"disable_referer"
);
const refererToggle = document.getElementById("disable-referer");
if (refererToggle) {
refererToggle.checked = disable_referer;
}
console.info("(info) Referer disabled:", disable_referer);
} catch (error) {
console.error("Referer check failed:", error);
}
}
}
/**
* Tab Manager for handling browser navigation
*/
class TabManager {
/**
* Create a new browser tab
* @param {Object} options Tab creation options
* @return {Promise<browser.tabs.Tab>}
*/
static async createTab(options) {
try {
const tab = await browser.tabs.create(options);
console.info("(info) Tab created:", options.url);
return tab;
} catch (error) {
console.error("Tab creation failed:", error);
throw error;
}
}
/**
* Create a tab in I2P container
* @param {string} url Destination URL
*/
static async createContainerTab(url) {
try {
const contexts = await browser.contextualIdentities.query({
name: CONFIG.TITLE_PREFACE,
});
if (!contexts.length) {
throw new Error("No I2P container found");
}
return this.createTab({
url,
cookieStoreId: contexts[0].cookieStoreId,
});
} catch (error) {
console.error("Container tab creation failed:", error);
throw error;
}
}
/**
* Navigate to local I2P service
* @param {string} path Service path
*/
static async goToService(path) {
try {
const routerAddress = await RouterManager.getRouterAddress();
await this.createTab({
url: `http://${routerAddress}${path}`,
});
} catch (error) {
console.error(`Service navigation failed : ${path}`, error);
}
}
}
/**
* Router Manager for I2P router operations
*/
class RouterManager {
/**
* Get router address
* @return {string}
*/
static getRouterAddress() {
try {
return `${control_host()}:${control_port()}`;
} catch {
return `${CONFIG.ROUTER.DEFAULT_HOST}:${CONFIG.ROUTER.DEFAULT_PORT}`;
}
}
/**
* Generate new identity
*/
static async generateNewIdentity() {
try {
const routerAddress = this.getRouterAddress();
const response = await fetch(`http ://${routerAddress}`);
console.info("(info) New identity generated");
return response;
} catch (error) {
console.error("Identity generation failed:", error);
throw error;
}
}
}
/**
* UI Manager for handling interface elements
*/
class UIManager {
/**
* Toggle panel visibility
* @param {string} showPanel Panel to show
* @param {string} hidePanel Panel to hide
*/
static togglePanels(showPanel, hidePanel) {
try {
const show = document.getElementById(showPanel);
const hide = document.getElementById(hidePanel);
if (show && hide) {
show.style.display = "block";
hide.style.display = "none";
}
} catch (error) {
console.error("Panel toggle failed:", error);
}
}
/**
* Initialize UI elements
*/
static initializeUI() {
Object.values(UI_ELEMENTS.LISTS).forEach((listId) => {
const list = document.getElementById(listId);
if (list) {
list.style.display = "none";
}
});
}
}
/**
* Click Handler for UI interactions
*/
class ClickHandler {
/**
* Handle click events
* @param {MouseEvent} event Click event
*/
static async handleClick(event) {
event.preventDefault();
const { id: targetId } = event.target;
try {
// Panel creation
if (targetId.startsWith("window-create-")) {
await TabManager.createTab({
type: "panel",
incognito: true,
});
}
// Service navigation
else if (targetId.startsWith("window-visit-")) {
const service = targetId.split("-")[2];
await this.handleServiceNavigation(service);
}
// Settings toggles
else if (targetId === "enable-web-rtc") {
await this.handleWebRTCToggle(event.target.checked);
}
// Other actions
else if (targetId === "generate-fresh-tunnel") {
await RouterManager.generateNewIdentity();
}
} catch (error) {
console.error("Click handling failed:", error);
}
}
/**
* Handle service navigation
* @param {string} service Service identifier
*/
static async handleServiceNavigation(service) {
const serviceMap = {
console: "/home",
i2ptunnel: "/i2ptunnel",
susimail: "/susimail",
snark: "/i2psnark",
};
if (serviceMap[service]) {
await TabManager.goToService(serviceMap[service]);
}
}
}
/**
* Initialize the information manager
*/
async function initialize() {
try {
// Initialize privacy settings
await Promise.all([
PrivacyManagerInfo.checkPeerConnection(),
PrivacyManagerInfo.checkSnowflake(),
PrivacyManagerInfo.checkHistory(),
PrivacyManagerInfo.checkReferer(),
]);
// Initialize UI
UIManager.initializeUI();
document.addEventListener(
"click",
ClickHandler.handleClick.bind(ClickHandler)
);
// Set up content updates
if (typeof UpdateContents !== "undefined") {
setInterval(UpdateContents, CONFIG.UPDATE_INTERVAL);
}
console.info("(info) Information manager initialized");
} catch (error) {
console.error("Initialization failed:", error);
}
}
// Initialize if browser API is available
if (browser?.windows) {
initialize();
}
// Export for testing
if (typeof module !== "undefined" && module.exports) {
module.exports = {
PrivacyManager: PrivacyManagerInfo,
TabManager,
RouterManager,
UIManager,
ClickHandler,
CONFIG,
};
}

8
irc.js
View File

@@ -1,8 +0,0 @@
fetch("http://127.0.0.1:7669").then((myJson) => {
if (myJson.status == 200) {
let irc = document.getElementById("visit-irc");
if (irc != null) {
irc.classList.remove("hidden");
}
}
});

View File

@@ -1,76 +0,0 @@
"title","description"
"Moar Bookmarks","A larger set of default bookmarks in their own directory would probably be good. Stuff like the forums, zzz's forums, gitlab, stats, identiguy, postman, echobot test, fingerprint test, etc."
"privacy-breach-generic false positive with lintian","We make a request to proxy.i2p, a sort of loopback site, to ensure that the proxy is ready for the browser and provide user feedback. Lintian sees proxy.i2p as a remote site, which it isn't. Given this, the Warning issued by lintian is a false positive. This should be handled somehow."
"App-tabs for Project sites?","Not sure if this is a good idea. May want to talk to Simply Secure about it."
"Descriptive Proxy Error Page","When the proxy isn't ready, but the user enters an I2P browsing tab, provide a descriptive error page to guide the user to a solution, even if that solution is to tell them to wait 2 minutes.
States should be described:
- Router Not Present: There is no indication that I2P is installed on the system. Direct them to an I2P distribution.
- HTTP Proxy Not Ready: The router is present, but the HTTP Proxy is not up yet. Wait 2 minutes, if t>2 minutes, direct them to /i2ptunnel to troubleshoot."
"More intuitive history management, better programming interface","Right now history management is from before it used contextual identities, with some hacks on top. It needs to be changed to a better interface, which simply takes a contextual identity and clears history based on that information. This will improve security, reliability, and be useful in non-I2P contexts in the future."
"Reseed over WebRTC Data Channel","This can't be done in just this extension, but this extension is probably an important component of a future plan in which this is straightforward. This is the trickiest thing I've tried so far, K, let's define some phases here...
Phase 0: Design
=============
We're pretty different from Tor in the places where Snowflake would really matter, but it's an inspiring effort and a cool product. This process probably won't bear much resemblance to Snowflake when it's all designed, but Snowflake was the original inspiration for the idea.
What we want to do is make it possible for I2P users to easily reseed eachother in a peer-to-peer way when necessary. It must be done no more often than a normal reseed, and it must only ever be client initiated.
This is **not** a webRTC transport for I2P. That would be an entirely different project. Especially if it were to do something genuinely insane like try to incorporate browser users not otherwise running I2P into the routing process. That would be crazy, right? Right? (It might not actually be that crazy but I have enough to think about right now). This is only for reseeds.
Questions
--------------
- Where to get the reseed file? Locally or from a reseed server? Probably a server, and we act as a proxy, but we need to examine advantages and disadvantages of each. Maybe both, server then a local fallback?
- Do we need to geolocate and never fetch a reseed file for a user in a country which is already automatically in hidden mode? Probably yes. Might want to never make them reseed helpers anyway.
- How to distribute the reseed file? If it comes from a server it will be signed by a key we already trust, that's fine, but if it comes from somewhere local we may want to use an interstitial
Components
-----------------
- Browser Extension - This repo. We use it because we can to some extent assume that people using this extension are also using I2P and can thus provide a reseed from a local source if need be.
- Javascript Import - Placed on web pages, a'la Snowflake and or Flashproxy. Shows a download link that says Download reseed file over WebRTC, uses a (random?) extension user.
- Native Proxy - Runs locally, obviates the need to download the reseed in a browser by fetching it over WebRTC on behalf of the router. Will start out as a Bridge but eventually be incorporated into I2P if successful.
1. Go version, using pion/webrtc
2. Java version, using whatever that Guardian Project library is probably
Phase 1: Manual Mode
=================
Components required
-----------------------------
- Browser Extension
- Javascript Import
Phase 2: Bridged Prototype
====================
- Native Proxy, Go Version
Phase 3: Router Incorporation
======================
- Native Proxy, Java Version
"
"Torbrowser","Are there any plans to support the Torbrowser?
"
"Use pageAction to indicate Security Status of I2P Sites(TLS, etc)","https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction"
"SSH in the Browser?","TODO"
"Dat Support?","TODO"
"Secure configuration of tunnels for RPC remotes","Eventually we'll have to have configuration for different RPC endpoints for I2PControl and Bittorrent, from there it's not a stretch to let remote clients be controlled over i2p tunnels as well, but in this case we need to make sure that we require the password to be changed from the default and possibly look into using encrypted leasesets here too."
"Tidy up the settings and document where they come from and what they do","Now that this is getting more and cooler features, I need to go over what all the settings are, how they're configured, which ones are obsolete and which ones needs to be created to fully realize all the cool stuff this plugin can do. This should be done before I even introduce settings for the torrent RPC protocols which makes it another blocker for the next version."
"Internationalize website","The plugin itself supports multiple languages, but the website does not. I should fix that up ASAP."
"Plugin Tab: I2P-Bote","An I2P-Bote plugin tab is a good idea too, but a low priority since Bote isn't very active right now."
"Style Guide","Develop a consistent style guide."
"Cool idea: tab or window.privacy API","Design webextension experiment."
"Uplifting 3: Letterboxing","I dunno what's up here. This setting is privacy.resistFingerprinting.letterboxing=true or something like that. If seems like the privacy.websites.resistFingerprinting API should enables privacy.resistFingerprinting."
"Uplifting 2: audio stuff","Work with Mozilla to disable fingerprintable audio API's when privacy.resistFingerprinting=true."
"Uplifting 1: webgl","Work with Mozilla to finish webgl requirements for resistFingerprinting."
"FoxyProxy Compatibility?","This extension currently *Breaks the expected behavior of FoxyProxy* by enforcing it's rules over those described by FoxyProxy. This one might be more trouble than it's worth, in fact I think it probably is, but if it isn't, this is a nice-to-have for some of the longtime Foxy users to ease their transition. "
"Android","Somewhere in the past few releases I broke Android, probably while I was making the window-management less irritating. Find+fix."
"Whonix","I2P integration in Whonix is running into the problem of making the router console available(Which requires either a proxy exception or an extra proxy like Privoxy) without making the whole localhost available. Since that's a problem this can solve, after I deal with the linting stuff I need to get back in touch with them. Right now I'm also (ab)using include-binaries, I'll need to resolve that too."
"Update channel for non-AMO Webextension","TODO:"
1 title description
2 Moar Bookmarks A larger set of default bookmarks in their own directory would probably be good. Stuff like the forums, zzz's forums, gitlab, stats, identiguy, postman, echobot test, fingerprint test, etc.
3 privacy-breach-generic false positive with lintian We make a request to proxy.i2p, a sort of loopback site, to ensure that the proxy is ready for the browser and provide user feedback. Lintian sees proxy.i2p as a remote site, which it isn't. Given this, the Warning issued by lintian is a false positive. This should be handled somehow.
4 App-tabs for Project sites? Not sure if this is a good idea. May want to talk to Simply Secure about it.
5 Descriptive Proxy Error Page When the proxy isn't ready, but the user enters an I2P browsing tab, provide a descriptive error page to guide the user to a solution, even if that solution is to tell them to wait 2 minutes. States should be described: - Router Not Present: There is no indication that I2P is installed on the system. Direct them to an I2P distribution. - HTTP Proxy Not Ready: The router is present, but the HTTP Proxy is not up yet. Wait 2 minutes, if t>2 minutes, direct them to /i2ptunnel to troubleshoot.
6 More intuitive history management, better programming interface Right now history management is from before it used contextual identities, with some hacks on top. It needs to be changed to a better interface, which simply takes a contextual identity and clears history based on that information. This will improve security, reliability, and be useful in non-I2P contexts in the future.
7 Reseed over WebRTC Data Channel This can't be done in just this extension, but this extension is probably an important component of a future plan in which this is straightforward. This is the trickiest thing I've tried so far, K, let's define some phases here... Phase 0: Design ============= We're pretty different from Tor in the places where Snowflake would really matter, but it's an inspiring effort and a cool product. This process probably won't bear much resemblance to Snowflake when it's all designed, but Snowflake was the original inspiration for the idea. What we want to do is make it possible for I2P users to easily reseed eachother in a peer-to-peer way when necessary. It must be done no more often than a normal reseed, and it must only ever be client initiated. This is **not** a webRTC transport for I2P. That would be an entirely different project. Especially if it were to do something genuinely insane like try to incorporate browser users not otherwise running I2P into the routing process. That would be crazy, right? Right? (It might not actually be that crazy but I have enough to think about right now). This is only for reseeds. Questions -------------- - Where to get the reseed file? Locally or from a reseed server? Probably a server, and we act as a proxy, but we need to examine advantages and disadvantages of each. Maybe both, server then a local fallback? - Do we need to geolocate and never fetch a reseed file for a user in a country which is already automatically in hidden mode? Probably yes. Might want to never make them reseed helpers anyway. - How to distribute the reseed file? If it comes from a server it will be signed by a key we already trust, that's fine, but if it comes from somewhere local we may want to use an interstitial Components ----------------- - Browser Extension - This repo. We use it because we can to some extent assume that people using this extension are also using I2P and can thus provide a reseed from a local source if need be. - Javascript Import - Placed on web pages, a'la Snowflake and or Flashproxy. Shows a download link that says Download reseed file over WebRTC, uses a (random?) extension user. - Native Proxy - Runs locally, obviates the need to download the reseed in a browser by fetching it over WebRTC on behalf of the router. Will start out as a Bridge but eventually be incorporated into I2P if successful. 1. Go version, using pion/webrtc 2. Java version, using whatever that Guardian Project library is probably Phase 1: Manual Mode ================= Components required ----------------------------- - Browser Extension - Javascript Import Phase 2: Bridged Prototype ==================== - Native Proxy, Go Version Phase 3: Router Incorporation ====================== - Native Proxy, Java Version
8 Torbrowser Are there any plans to support the Torbrowser?
9 Use pageAction to indicate Security Status of I2P Sites(TLS, etc) https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction
10 SSH in the Browser? TODO
11 Dat Support? TODO
12 Secure configuration of tunnels for RPC remotes Eventually we'll have to have configuration for different RPC endpoints for I2PControl and Bittorrent, from there it's not a stretch to let remote clients be controlled over i2p tunnels as well, but in this case we need to make sure that we require the password to be changed from the default and possibly look into using encrypted leasesets here too.
13 Tidy up the settings and document where they come from and what they do Now that this is getting more and cooler features, I need to go over what all the settings are, how they're configured, which ones are obsolete and which ones needs to be created to fully realize all the cool stuff this plugin can do. This should be done before I even introduce settings for the torrent RPC protocols which makes it another blocker for the next version.
14 Internationalize website The plugin itself supports multiple languages, but the website does not. I should fix that up ASAP.
15 Plugin Tab: I2P-Bote An I2P-Bote plugin tab is a good idea too, but a low priority since Bote isn't very active right now.
16 Style Guide Develop a consistent style guide.
17 Cool idea: tab or window.privacy API Design webextension experiment.
18 Uplifting 3: Letterboxing I dunno what's up here. This setting is privacy.resistFingerprinting.letterboxing=true or something like that. If seems like the privacy.websites.resistFingerprinting API should enables privacy.resistFingerprinting.
19 Uplifting 2: audio stuff Work with Mozilla to disable fingerprintable audio API's when privacy.resistFingerprinting=true.
20 Uplifting 1: webgl Work with Mozilla to finish webgl requirements for resistFingerprinting.
21 FoxyProxy Compatibility? This extension currently *Breaks the expected behavior of FoxyProxy* by enforcing it's rules over those described by FoxyProxy. This one might be more trouble than it's worth, in fact I think it probably is, but if it isn't, this is a nice-to-have for some of the longtime Foxy users to ease their transition.
22 Android Somewhere in the past few releases I broke Android, probably while I was making the window-management less irritating. Find+fix.
23 Whonix I2P integration in Whonix is running into the problem of making the router console available(Which requires either a proxy exception or an extra proxy like Privoxy) without making the whole localhost available. Since that's a problem this can solve, after I deal with the linting stuff I need to get back in touch with them. Right now I'm also (ab)using include-binaries, I'll need to resolve that too.
24 Update channel for non-AMO Webextension TODO:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -1,36 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link href="search.css" rel="stylesheet">
<link href="home.css" rel="stylesheet">
<!--<link href="info.css" rel="stylesheet">--><!--<link href="torrent/popup.css" rel="stylesheet">-->
<title>
</title>
</head>
<body>
<div id="browserpanel" class="content">
<div class="panel">
<div class="section-header panel-section panel-section-header" id="headline">
<div class="text-section-header" id="text-section-header">
<h1 id="text-section-header">This site offers an anonymous mirror on I2P</h1>
</div>
</div>
</div>
<div class="panel">
<ul>
<li>
<div class="address-info">
<span id="TypeLabel">Alternate Addresses:</span> <span id="Type"></span>
<div id="TypeInfo">
</div>
</div>
</li>
</ul>
</div>
</div>
<script src="location.js"></script>
</body>
</html>

View File

@@ -1,19 +0,0 @@
function gotCurrent(tab) {
function gotTitle(title) {
let addr = title;
document.getElementById("TypeInfo").innerHTML =
'<div class="AddressInfo"><a href="' + addr + '">' + addr + "</a></div>";
}
console.log(tab);
var gettingTitle = browser.pageAction.getTitle({
tabId: tab[0].id,
});
gettingTitle.then(gotTitle);
}
function tabError(error) {
console.log(`Error : ${error}`);
}
const gettingCurrent = browser.tabs.query({ active: true });
gettingCurrent.then(gotCurrent, tabError);

View File

@@ -1,16 +1,14 @@
{
"browser_specific_settings": {
"applications": {
"gecko": {
"id": "i2ppb@eyedeekay.github.io",
"strict_min_version": "91.1.0"
"strict_min_version": "85.0"
}
},
"permissions": [
"theme",
"alarms",
"browsingData",
"bookmarks",
"contextMenus",
"management",
"notifications",
"proxy",
@@ -21,13 +19,12 @@
"webRequestBlocking",
"contextualIdentities",
"cookies",
"history",
"tabs",
"<all_urls>"
],
"manifest_version": 2,
"name": "__MSG_extensionName__",
"version": "2.8.0",
"version": "0.113",
"description": "__MSG_extensionDescription__",
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
"icons": {
@@ -37,8 +34,7 @@
"browser_style": true,
"default_icon": "icons/i2plogo.png",
"default_title": "__MSG_extensionName__",
"default_popup": "window.html",
"default_area": "navbar"
"default_popup": "window.html"
},
"page_action": {
"browser_style": true,
@@ -62,10 +58,12 @@
}
],
"background": {
"persistent": false,
"persistent": true,
"scripts": [
"options/options.js",
"config.js",
"torrent/common.js",
"torrent/background.js",
"i2pcontrol/i2pcontrol.js",
"host.js",
"privacy.js",
"platform.js",
@@ -78,23 +76,5 @@
"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"
}
"default_locale": "en"
}

BIN
menu.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 KiB

View File

@@ -1,152 +0,0 @@
function contentUpdateById(id, message) {
let infoTitle = document.getElementById(id);
let messageContent = chrome.i18n.getMessage(message);
if (infoTitle === null) {
console.log("content error", id, messageContent);
return;
}
infoTitle.textContent = messageContent;
}
contentUpdateById("CertLabel", "CertLabel");
contentUpdateById("SignedLabel", "SignedLabel");
contentUpdateById("TorrentTypeLabel", "TorrentTypeLabel");
contentUpdateById("TypeLabel", "TypeLabel");
contentUpdateById("aboutconsole", "aboutconsole");
contentUpdateById("abouthome", "abouthome");
contentUpdateById("addresstype", "addresstype");
contentUpdateById("applicationExplain", "applicationExplain");
contentUpdateById("applicationHeader", "applicationHeader");
contentUpdateById("beta", "beta");
contentUpdateById("bookmarksButton", "bookmarksButton");
contentUpdateById("btRpcHostText", "btRpcHostText");
contentUpdateById("btRpcPathText", "btRpcPathText");
contentUpdateById("btRpcPortText", "btRpcPortText");
contentUpdateById("controlExplain", "controlExplain");
contentUpdateById("controlHeader", "controlHeader");
contentUpdateById("controlHelpText", "controlHelpText");
contentUpdateById("controlHostText", "controlHostText");
contentUpdateById("controlPortText", "controlPortText");
contentUpdateById("description", "description");
contentUpdateById("description2", "description2");
contentUpdateById("fliplinks", "fliplinks");
contentUpdateById("headline", "headline");
contentUpdateById("histDesc", "histDesc");
contentUpdateById("hostText", "hostText");
contentUpdateById("i2ppage", "i2ppage");
contentUpdateById("i2ptunnel", "i2ptunnel");
contentUpdateById("label-router-activepeers", "label-router-activepeers");
contentUpdateById("label-router-bandwidth", "label-router-bandwidth");
contentUpdateById("label-router-bw-inbound-15s", "label-router-bw-inbound-15s");
contentUpdateById("label-router-bw-inbound-1s", "label-router-bw-inbound-1s");
contentUpdateById(
"label-router-bw-outbound-15s",
"label-router-bw-outbound-15s"
);
contentUpdateById("label-router-bw-outbound-1s", "label-router-bw-outbound-1s");
contentUpdateById(
"label-router-net-tunnels-participating",
"label-router-net-tunnels-participating"
);
contentUpdateById(
"label-router-netdb-fastpeers",
"label-router-netdb-fastpeers"
);
contentUpdateById(
"label-router-netdb-highcapacitypeers",
"label-router-netdb-highcapacitypeers"
);
contentUpdateById(
"label-router-netdb-isreseeding",
"label-router-netdb-isreseeding"
);
contentUpdateById(
"label-router-netdb-knownpeers",
"label-router-netdb-knownpeers"
);
contentUpdateById("label-router-peers", "label-router-peers");
contentUpdateById("label-router-status", "label-router-status");
contentUpdateById("label-router-uptime", "label-router-uptime");
contentUpdateById("label-router-version", "label-router-version");
contentUpdateById("links", "links");
contentUpdateById("linksExplain", "linksExplain");
contentUpdateById("onboardingButtonFive", "onboardingButtonFive");
contentUpdateById("onboardingButtonFour", "onboardingButtonFour");
contentUpdateById("onboardingButtonOne", "onboardingButtonOne");
contentUpdateById("onboardingButtonThree", "onboardingButtonThree");
contentUpdateById("onboardingButtonTwo", "onboardingButtonTwo");
contentUpdateById("onboardingButtonZero", "onboardingButtonZero");
contentUpdateById("onboardingContentFive", "onboardingContentFive");
contentUpdateById("onboardingContentFour", "onboardingContentFour");
contentUpdateById("onboardingContentOne", "onboardingContentOne");
contentUpdateById("onboardingContentThree", "onboardingContentThree");
contentUpdateById("onboardingContentTwo", "onboardingContentTwo");
contentUpdateById("onboardingContentZero", "onboardingContentZero");
contentUpdateById("onboardingFive", "onboardingFive");
contentUpdateById("onboardingFour", "onboardingFour");
contentUpdateById("onboardingOne", "onboardingOne");
contentUpdateById("onboardingThree", "onboardingThree");
contentUpdateById("onboardingTitle", "onboardingTitle");
contentUpdateById("onboardingTwo", "onboardingTwo");
contentUpdateById("onboardingZero", "onboardingZero");
contentUpdateById("portText", "portText");
contentUpdateById("proxy-check", "proxy-check");
contentUpdateById("releases", "releases");
contentUpdateById("returnhome", "returnhome");
contentUpdateById("router-net-bw-inbound-15s", "router-net-bw-inbound-15s");
contentUpdateById("router-net-bw-inbound-1s", "router-net-bw-inbound-1s");
contentUpdateById("router-net-bw-outbound-15s", "router-net-bw-outbound-15s");
contentUpdateById("router-net-bw-outbound-1s", "router-net-bw-outbound-1s");
contentUpdateById(
"router-net-tunnels-participating",
"router-net-tunnels-participating"
);
contentUpdateById("router-netdb-activepeers", "router-netdb-activepeers");
contentUpdateById("router-netdb-fastpeers", "router-netdb-fastpeers");
contentUpdateById(
"router-netdb-highcapacitypeers",
"router-netdb-highcapacitypeers"
);
contentUpdateById("router-netdb-isreseeding", "router-netdb-isreseeding");
contentUpdateById("router-netdb-knownpeers", "router-netdb-knownpeers");
contentUpdateById("router-restart", "router-restart");
contentUpdateById("router-shutdown", "router-shutdown");
contentUpdateById("router-status", "router-status");
contentUpdateById("router-uptime", "router-uptime");
contentUpdateById("router-version", "router-version");
contentUpdateById("routerConsole", "routerConsole");
contentUpdateById("rpcHelpText", "rpcHelpText");
contentUpdateById("rpcHostText", "rpcHostText");
contentUpdateById("rpcPassText", "rpcPassText");
contentUpdateById("rpcPathText", "rpcPathText");
contentUpdateById("rpcPortText", "rpcPortText");
contentUpdateById("signingcert", "signingcert");
contentUpdateById("sitecert", "sitecert");
contentUpdateById("snark", "snark");
contentUpdateById("sourcehead", "sourcehead");
contentUpdateById("sources", "sources");
contentUpdateById("susimail", "susimail");
contentUpdateById("text-section-header", "text-section-header");
contentUpdateById(
"text-section-proxyerr-header",
"text-section-proxyerr-header"
);
contentUpdateById(
"text-section-torrents-header",
"text-section-torrents-header"
);
contentUpdateById("toopie", "toopie");
contentUpdateById("torrentui-opener", "torrentui-opener");
contentUpdateById("visit-irc", "visit-irc");
contentUpdateById("webpage", "webpage");
contentUpdateById("window-visit-console", "window-visit-console");
contentUpdateById("window-visit-help", "window-visit-help");
contentUpdateById("window-visit-homepage", "window-visit-homepage");
contentUpdateById("window-visit-i2p", "window-visit-i2p");
contentUpdateById("window-visit-i2ptunnel", "window-visit-i2ptunnel");
contentUpdateById("window-visit-index", "window-visit-index");
contentUpdateById("window-visit-releases", "window-visit-releases");
contentUpdateById("window-visit-router", "window-visit-router");
contentUpdateById("window-visit-snark", "window-visit-snark");
contentUpdateById("window-visit-sources", "window-visit-sources");
contentUpdateById("window-visit-susimail", "window-visit-susimail");
contentUpdateById("window-visit-torrent", "window-visit-torrent");

View File

@@ -1,52 +0,0 @@
body {
font-family: "Open Sans Light",sans-serif;
font-size: 0.9em;
font-weight: 300
}
section.scheme-options {
padding: 0.5em 0;
margin: 1em 0
}
#clear-button {
margin: 0 1.3em 1em 0
}
#clear-button,
section.scheme-options input,
section.scheme-options>select {
}
label {
display: block;
margin-top: 1em
}
label:hover {
background-color: #eaeff2
}
.title {
font-size: 1.2em;
margin-bottom: 0.5em;
width: 100%
}
body,
html {
width: 100%
}
a {
margin: 10px
}
.panel {
margin: 5px
}
span.identity {
width: 100px;
margin-left: 1em
}
.identity-options {
display: none
}
input {
}
div {
width: 100%!important
}

View File

@@ -1,61 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link href="/home.css" rel="stylesheet">
<link href="options.css" rel="stylesheet">
<title>
</title>
</head>
<body>
<section class="scheme-options">
<span class="title">Proxy Scheme:</span> <select id="proxy_scheme">
<option selected value="http">
HTTP
</option>
<option value="socks5">
SOCKS5
</option>
</select>
</section>
<section class="scheme-options">
<span class="title">Bookmarks Status:</span> <input id="bookmarksState" name="bookmarksstate" type="checkbox" value="bookmarksstate"> <label for="bookmarksState">Bookmarks were created at install-time. <button id="bookmarksButton" type="submit">Re-Create Bookmarks</button></label>
</section>
<section class="scheme-options proxy-options" id="proxy-options">
<label for="bookmarksState"></label>
<div class="title">
<label for="bookmarksState">Proxy Options</label>
</div>
<label for="bookmarksState"></label>
<p id="proxyHelpText"><label for="bookmarksState"></label>
</p>
<label 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>
</section>
<!--<section class="scheme-options identity-options">
<div class="panel">
<div id="identity-list">Identity list?</div>
</div>
</section>-->
<section class="scheme-options console-options" id="console-options">
<div>
<div class="title">
Router Console Options
</div>
<p id="controlHelpText">Configure your router console options here.</p>
<label id="controlPortText">Console Host:</label> <input data="controlhost" id="controlhost" type="text" value="127.0.0.1">
<br>
<label id="controlHostText">Console Port:</label> <input data="controlport" id="controlport" type="text" value="7657">
</div>
</section>
<input id="save-button" type="button" value="Save preferences">
<script src="options.js"></script>
<script src="/bookmarks.js"></script> <!--<script src="/torrent/browser-polyfill.min.js"></script>
<script src="/torrent/options.js"></script>-->
</body>
</html>

View File

@@ -1,311 +0,0 @@
/**
* @fileoverview I2P Browser Extension Options Management
* Handles proxy configuration and UI settings for I2P container contexts
*/
// Constants and Types
const DEFAULT_SETTINGS = {
proxy_scheme: 'http',
proxy_host: '127.0.0.1',
proxy_port: 4444,
control_host: '127.0.0.1',
control_port: 7657,
bookmarks_state: false,
};
/**
* Gets proxy scheme from HTML select element
* @return {string}
*/
function getFromHTMLValueScheme() {
const proxy_scheme = document.querySelector('#proxy_scheme');
if (!proxy_scheme) return 'http';
switch (proxy_scheme.value.toLowerCase()) {
case 'http':
case 'socks':
return proxy_scheme.value.toLowerCase();
default:
return 'http';
}
}
/**
* Checks stored settings and applies defaults if necessary
* @param {Object} storedSettings
* @return {Promise<Object>}
*/
async function checkStoredSettings(storedSettings) {
try {
const proxyInfo = await browser.proxy.settings.get({});
const { http } = proxyInfo.value;
if (!http) {
return DEFAULT_SETTINGS;
}
const[host, portStr] = http.split(":");
const port = parseInt(portStr);
return {
bookmarks_state: storedSettings.bookmarks_state || false,
proxy_scheme: storedSettings.proxy_scheme || "http",
proxy_host: storedSettings.proxy_host || host || "127.0.0.1",
proxy_port: storedSettings.proxy_port || (port === 7644 ? port : 4444),
control_host: storedSettings.control_host || host || "127.0.0.1",
control_port: storedSettings.control_port || 7657,
};
} catch (error) {
console.error("Error in checkStoredSettings:", error);
return DEFAULT_SETTINGS;
}
}
/**
* Checks and applies Android-specific stored settings
* @param {Object} settings
* @returns {Object}
*/
function checkAndroidStoredSettings(settings) {
const mergedSettings = {
...DEFAULT_SETTINGS,
...settings,
};
// Determine correct proxy port with clear logic
function determineProxyPort(port) {
if (!port) {
return 4444;
}
if (port === 7644) {
return 7644;
}
return 4444;
}
mergedSettings.proxy_port = determineProxyPort(mergedSettings.proxy_port);
console.info("Android settings merged:", mergedSettings);
chrome.storage.local.set(mergedSettings);
return mergedSettings;
}
/**
* Updates UI text elements with localized messages
*/
function initializeUI() {
const textElements = [
{ id: "hostText", msgKey: "hostText" },
{ id: "portText", msgKey: "portText" },
{ id: "proxyHelpText", msgKey: "proxyHelpText" },
{ id: "controlHostText", msgKey: "controlHostText" },
{ id: "controlPortText", msgKey: "controlPortText" },
{ id: "controlHelpText", msgKey: "controlHelpText" },
];
textElements.forEach(({ id, msgKey }) => {
const element = document.getElementById(id);
if (element) {
element.textContent = chrome.i18n.getMessage(msgKey);
}
});
}
/**
* Updates UI elements with stored settings
* @param {Object} settings
*/
function updateUI(settings) {
const elements = {
proxy_scheme: document.querySelector("#proxy_scheme"),
bookmarks_state: document.getElementById("bookmarksState"),
host: document.getElementById("host"),
port: document.getElementById("port"),
controlhost: document.getElementById("controlhost"),
controlport: document.getElementById("controlport"),
};
Object.entries(elements).forEach(([key, element]) => {
if (element === null || element === undefined) {
return;
}
if (element.type === "checkbox") {
element.checked = settings[key];
} else {
element.value = settings[key];
}
});
initializeUI();
}
/**
* Gets value from element with fallback to default
* @param {HTMLElement|null} element
* @param {string|number} defaultValue
* @returns {string|number}
*/
function getElementValueWithDefault(element, defaultValue) {
if (!element) {
return defaultValue;
}
return element.value || defaultValue;
}
/**
* Gets numeric value from element with fallback to default
* @param {HTMLElement|null} element
* @param {number} defaultValue
* @returns {number}
*/
function getNumericValueWithDefault(element, defaultValue) {
if (!element || !element.value) {
return defaultValue;
}
return parseInt(element.value) || defaultValue;
}
/**
* Stores current settings to browser storage
* @returns {Promise<void>}
*/
async function storeSettings() {
const elements = {
host: document.getElementById("host"),
port: document.getElementById("port"),
controlhost: document.getElementById("controlhost"),
controlport: document.getElementById("controlport"),
bookmarks: document.getElementById("bookmarksState"),
};
const settings = {
proxy_scheme: getFromHTMLValueScheme(),
proxy_host: getElementValueWithDefault(
elements.host,
DEFAULT_SETTINGS.proxy_host
),
proxy_port: getNumericValueWithDefault(
elements.port,
DEFAULT_SETTINGS.proxy_port
),
control_host: getElementValueWithDefault(
elements.controlhost,
DEFAULT_SETTINGS.control_host
),
control_port: getNumericValueWithDefault(
elements.controlport,
DEFAULT_SETTINGS.control_port
),
bookmarks_state: elements.bookmarks ? elements.bookmarks.checked : false,
};
try {
await browser.storage.local.set(settings);
console.info("Settings stored successfully:", settings);
} catch (error) {
console.error("Failed to store settings:", error);
throw error;
}
}
/**
* Error handler for async operations
* @param {Error} error
*/
function onError(error) {
console.error("Operation failed:", error);
}
/**
* Initializes settings based on platform
*/
async function initializeSettings() {
try {
const platform = await browser.runtime.getPlatformInfo();
if (platform.os === "android") {
chrome.storage.local.get(function (gotSettings) {
const settings = checkAndroidStoredSettings(gotSettings);
updateUI(settings);
});
} else {
chrome.storage.local.get(function (gotSettings) {
checkStoredSettings(gotSettings).then(updateUI).catch(onError);
});
}
} catch (error) {
console.error("Platform detection failed:", error);
onError(error);
}
}
/**
* Retrieves a setting from local storage
* @param {string} key - The key to retrieve
* @param {any} defaultValue - Default value if key doesn't exist
* @returns {any} The stored value or default value
*/
function getSetting(key, defaultValue) {
try {
const value = localStorage.getItem(key);
if (value === null || value === undefined) {
return defaultValue;
}
return value;
} catch (error) {
console.error(`Failed to get setting: ${key}`, error);
return defaultValue;
}
}
function getFromStorageProxyScheme() {
return getSetting("proxy_scheme", DEFAULT_SETTINGS.proxy_scheme);
}
function getFromStorageHost() {
return getSetting("proxy_host", DEFAULT_SETTINGS.proxy_host);
}
function getFromStoragePort() {
return getSetting("proxy_port", DEFAULT_SETTINGS.proxy_port);
}
function getFromStorageControlHost() {
return getSetting("control_host", DEFAULT_SETTINGS.control_host);
}
function getFromStorageControlPort() {
return getSetting("control_port", DEFAULT_SETTINGS.control_port);
}
function getFromStorageRPCHost() {
return getSetting("rpc_host", DEFAULT_SETTINGS.rpc_host);
}
function getFromStorageRPCPort() {
return getSetting("rpc_port", DEFAULT_SETTINGS.rpc_port);
}
function getFromStorageRPCPath() {
return getSetting("rpc_path", DEFAULT_SETTINGS.rpc_path);
}
function getFromStorageRPCPass() {
return getSetting("rpc_pass", DEFAULT_SETTINGS.rpc_pass);
}
function getFromStorageBTRPCHost() {
return getSetting("bt_rpc_host", DEFAULT_SETTINGS.bt_rpc_host);
}
function getFromStorageBTRPCPort() {
return getSetting("bt_rpc_port", DEFAULT_SETTINGS.bt_rpc_port);
}
function getFromStorageBTRPCPath() {
return getSetting("bt_rpc_path", DEFAULT_SETTINGS.bt_rpc_path);
}
function getFromStorageBTRPCPass() {
return getSetting("bt_rpc_pass", DEFAULT_SETTINGS.bt_rpc_pass);
}
function getFromStorageBookmarksState() {
return getSetting("bookmarks_state", DEFAULT_SETTINGS.bookmarks_state);
}
// Event Listeners
const saveButton = document.querySelector("#save-button");
if (saveButton) {
saveButton.addEventListener("click", storeSettings);
}
document.addEventListener("DOMContentLoaded", initializeSettings);

View File

@@ -1,132 +0,0 @@
/**
* @fileoverview I2P Platform Detection Manager
* Handles platform detection and feature support for Firefox WebExtensions
*/
// Platform configuration constants
const PLATFORM_CONFIG = {
PLATFORMS: {
ANDROID: "android",
DESKTOP: "desktop",
},
FEATURES: {
CLOSABLE: "closable",
CONTAINER_TABS: "containerTabs",
SIDEBAR: "sidebar",
},
};
/**
* Platform Manager for handling platform-specific functionality
*/
class PlatformManager {
constructor() {
// Platform state
this.platformState = {
isAndroid: false,
isInitialized: false,
};
// Initialize platform detection
this.initialize();
}
/**
* Initialize platform detection
* @private
* @return {Promise<void>}
*/
async initialize() {
try {
const platformInfo = await browser.runtime.getPlatformInfo();
this.platformState.isAndroid =
platformInfo.os === PLATFORM_CONFIG.PLATFORMS.ANDROID;
this.platformState.isInitialized = true;
console.info(
`(platform) Running in ${
this.platformState.isAndroid ? "Android" : "Desktop"
} detected`
);
} catch (error) {
console.error("Platform detection failed:", error);
this.platformState.isAndroid = false;
this.platformState.isInitialized = true;
}
}
/**
* Check if running on Android
* @return {boolean}
*/
isAndroid() {
if (!this.platformState.isInitialized) {
console.warn("Platform detection not yet initialized");
return false;
}
return this.platformState.isAndroid;
}
/**
* Check if running on Desktop
* @return {boolean}
*/
isDesktop() {
return !this.isAndroid();
}
/**
* Check if windows are closable
* @return {boolean}
*/
isClosable() {
return this.isDesktop();
}
/**
* Get current platform state
* @return {Object}
*/
getPlatformState() {
return { ...this.platformState };
}
}
// Create singleton instance
const platformManager = new PlatformManager();
/**
* Legacy API compatibility layer
*/
const PlatformAPI = {
/**
* Check if running on Android (legacy support)
* @return {boolean}
*/
isDroid() {
const isAndroid = platformManager.isAndroid();
console.log("(platform) android?", isAndroid);
return isAndroid;
},
/**
* Check if windows are not closable (legacy support)
* @return {boolean}
*/
notClosable() {
return !platformManager.isClosable();
},
};
// Export legacy API functions to window
window.isDroid = PlatformAPI.isDroid;
window.notClosable = PlatformAPI.notClosable;
// Export for testing
if (typeof module !== "undefined" && module.exports) {
module.exports = {
platformManager,
PLATFORM_CONFIG,
PlatformAPI,
};
}

View File

@@ -1,364 +0,0 @@
/**
* @fileoverview I2P Privacy Manager
* Handles Firefox privacy settings and data cleanup for I2P container tabs
*/
const PRIVACY_CONFIG = {
TITLE_PREFACE: chrome.i18n.getMessage("titlePreface"),
SNOWFLAKE_ID: "{b11bea1f-a888-4332-8d8a-cec2be7d24b9}",
WINDOWS: {
OS: "win",
},
BROWSING_DATA: {
SINCE: "forever",
TYPES: ["downloads", "passwords", "formData", "localStorage", "history"],
},
};
/**
* Privacy Manager for handling browser privacy settings
*/
class PrivacyManager {
/**
* Set browser privacy settings
* @param {Object} settings Privacy setting configuration
* @return {Promise<boolean>}
*/
static async setSetting(setting, value) {
try {
const result = await setting.set({ value });
console.info(`Privacy setting updated : ${value}`);
return true;
} catch (error) {
console.error("Privacy setting failed:", error);
return false;
}
}
/**
* Configure hyperlink auditing
* @param {boolean} enabled Whether to enable auditing
*/
static async configureHyperlinkAuditing(enabled = false) {
await this.setSetting(
browser.privacy.websites.hyperlinkAuditingEnabled,
enabled
);
}
/**
* Configure first party isolation
* @param {boolean} enabled Whether to enable isolation
*/
static async configureFirstPartyIsolation(enabled = true) {
await this.setSetting(browser.privacy.websites.firstPartyIsolate, enabled);
}
/**
* Configure cookie behavior
* @param {boolean} allowThirdParty Whether to allow third party cookies
*/
static async configureCookies(allowThirdParty = false) {
try {
const cookieConfig = await browser.privacy.websites.cookieConfig.get({});
await browser.privacy.websites.cookieConfig.set({
value: {
behavior: allowThirdParty ? "allow_all" : "reject_third_party",
nonPersistentCookies: cookieConfig.value.nonPersistentCookies,
},
});
} catch (error) {
console.error("Cookie configuration failed:", error);
}
}
/**
* Configure referrer policy
* @param {boolean} enabled Whether to enable referrers
*/
static async configureReferrers(enabled = false) {
await this.setSetting(browser.privacy.websites.referrersEnabled, enabled);
}
/**
* Configure fingerprinting resistance
* @param {boolean} enabled Whether to enable resistance
*/
static async configureFingerprinting(enabled = true) {
await this.setSetting(
browser.privacy.websites.resistFingerprinting,
enabled
);
}
/**
* Configure tracking protection
* @param {boolean} enabled Whether to enable protection
*/
static async configureTrackingProtection(enabled = true) {
await this.setSetting(
browser.privacy.websites.trackingProtectionMode,
enabled ? "always" : "never"
);
}
/**
* Configure DRM content
* @param {boolean} enabled Whether to enable DRM
*/
static async configureDRM(enabled = false) {
const platformInfo = await browser.runtime.getPlatformInfo();
if (platformInfo.os === PRIVACY_CONFIG.WINDOWS.OS) {
await this.setSetting(
browser.privacy.websites.protectedContentEnabled,
enabled
);
}
}
/**
* Configure WebRTC
* @param {boolean} enabled Whether to enable WebRTC
*/
static async configureWebRTC(enabled = false) {
try {
const snowflake = await browser.management.get(
PRIVACY_CONFIG.SNOWFLAKE_ID
);
console.info("Snowflake detected, preserving WebRTC");
return;
} catch {
await this.setSetting(
browser.privacy.network.peerConnectionEnabled,
enabled
);
await this.setSetting(
chrome.privacy.network.webRTCIPHandlingPolicy,
enabled ? "disable_non_proxied_udp" : "default"
);
}
}
/**
* Configure password saving
* @param {boolean} enabled Whether to enable password saving
*/
static async configurePasswordSaving(enabled = false) {
await this.setSetting(
browser.privacy.services.passwordSavingEnabled,
enabled
);
}
/**
* Apply recommended privacy settings
*/
static async applyRecommendedSettings() {
await Promise.all([
this.configureHyperlinkAuditing(false),
this.configureFirstPartyIsolation(true),
this.configureCookies(false),
this.configureFingerprinting(true),
this.configureTrackingProtection(true),
this.configureDRM(false),
this.configureWebRTC(false),
this.configurePasswordSaving(false),
]);
}
/**
* Reset all privacy settings to defaults
*/
static async resetAllSettings() {
await Promise.all([
browser.privacy.websites.hyperlinkAuditingEnabled.clear(),
browser.privacy.websites.firstPartyIsolate.clear(),
browser.privacy.websites.cookieConfig.clear(),
browser.privacy.websites.referrersEnabled.clear(),
browser.privacy.websites.resistFingerprinting.clear(),
browser.privacy.websites.trackingProtectionMode.clear(),
browser.privacy.websites.protectedContentEnabled.clear(),
browser.privacy.network.peerConnectionEnabled.clear(),
browser.privacy.services.passwordSavingEnabled.clear(),
]);
}
}
/**
* Data Cleanup Manager for handling browsing data
*/
class DataCleanupManager {
/**
* Clean browsing data for I2P domains
* @param {Object} options Cleanup options
*/
static async cleanBrowsingData(options = {}) {
const since = this.calculateCleanupTime(
options.since || PRIVACY_CONFIG.BROWSING_DATA.SINCE
);
try {
const i2pHistory = await browser.history.search({
text: "i2p",
startTime: 0,
});
for (const item of i2pHistory) {
if (this.isI2PUrl(item.url)) {
await this.cleanupForDomain(item.url, since);
}
}
await this.notifyCleanup();
} catch (error) {
console.error("Data cleanup failed:", error);
}
}
/**
* Calculate cleanup timestamp
* @param {string} timeframe Cleanup timeframe
* @returns {number} Timestamp
*/
static calculateCleanupTime(timeframe) {
const times = {
hour: () => 1000 * 60 * 60,
day: () => 1000 * 60 * 60 * 24,
week: () => 1000 * 60 * 60 * 24 * 7,
forever: () => 0,
};
return timeframe === "forever"
? 0
: Date.now() - (times[timeframe] || times.forever)();
}
/**
* Clean up data for specific domain
* @param {string} url Domain URL
* @param {number} since Timestamp
*/
static async cleanupForDomain(url, since) {
const hostname = this.extractI2PHostname(url);
await Promise.all([
browser.history.deleteUrl({ url }),
browser.browsingData.removeCache({}),
browser.browsingData.removePasswords({ hostnames: [hostname], since }),
browser.browsingData.removeDownloads({ hostnames: [hostname], since }),
browser.browsingData.removeFormData({ hostnames: [hostname], since }),
browser.browsingData.removeLocalStorage({ hostnames: [hostname], since }),
]);
await this.cleanupContainerCookies(url);
}
/**
* Clean up container cookies
* @param {string} url Domain URL
*/
static async cleanupContainerCookies(url) {
const containers = await browser.contextualIdentities.query({
name: PRIVACY_CONFIG.TITLE_PREFACE,
});
for (const container of containers) {
const cookies = await browser.cookies.getAll({
firstPartyDomain: null,
storeId: container.cookieStoreId,
});
for (const cookie of cookies) {
await browser.cookies.remove({
firstPartyDomain: cookie.firstPartyDomain,
name: cookie.name,
url: url,
});
}
}
}
/**
* Extract I2P hostname from URL
* @param {string} url URL to parse
* @returns {string} I2P hostname
*/
static extractI2PHostname(url) {
try {
const urlObj = new URL(url);
if (urlObj.host.endsWith(".i2p")) {
return urlObj.host;
}
if (url.includes(".i2p")) {
const parts = url.split("=");
for (const part of parts) {
const items = part.split("%");
for (const item of items) {
if (item.includes(".i2p")) {
return item.replace("3D", "");
}
}
}
}
return url.split("/")[2] || url.split("/")[0];
} catch (error) {
console.error("Hostname extraction failed:", error);
return "";
}
}
/**
* Check if URL is I2P
* @param {string} url URL to check
* @returns {boolean}
*/
static isI2PUrl(url) {
const hostname = this.extractI2PHostname(url);
return hostname.split(":")[0].endsWith(".i2p");
}
/**
* Send cleanup notification
*/
static async notifyCleanup() {
await browser.notifications.create({
type: "basic",
title: "Removed browsing data",
message: "Cleaned I2P browsing data and history",
});
}
}
// Initialize privacy settings
PrivacyManager.applyRecommendedSettings();
// Listen for uninstall
browser.management.onUninstalled.addListener(async (info) => {
const selfInfo = await browser.management.getSelf();
if (info.name === selfInfo.name) {
await PrivacyManager.resetAllSettings();
}
});
// Listen for messages
browser.runtime.onMessage.addListener(async (message) => {
switch (message.type) {
case "cleanupData":
await DataCleanupManager.cleanBrowsingData(message.options);
break;
case "updatePrivacy":
await PrivacyManager.applyRecommendedSettings();
break;
}
});
// Export for testing
if (typeof module !== "undefined" && module.exports) {
module.exports = {
PrivacyManager,
DataCleanupManager,
PRIVACY_CONFIG,
};
}

405
proxy.js
View File

@@ -1,405 +0,0 @@
/**
* @fileoverview I2P Proxy Manager
* Handles proxy configuration and routing for I2P container tabs
*/
// Configuration constants
const PROXY_CONFIG = {
MESSAGES: {
TITLE: chrome.i18n.getMessage("titlePreface"),
WEB: chrome.i18n.getMessage("webPreface"),
ROUTER: chrome.i18n.getMessage("routerPreface"),
MAIL: chrome.i18n.getMessage("mailPreface"),
TORRENT: chrome.i18n.getMessage("torrentPreface"),
TUNNEL: chrome.i18n.getMessage("i2ptunnelPreface"),
IRC: chrome.i18n.getMessage("ircPreface"),
EXTENSION: chrome.i18n.getMessage("extensionPreface"),
MUWIRE: chrome.i18n.getMessage("muwirePreface"),
BOTE: chrome.i18n.getMessage("botePreface"),
BLOG: chrome.i18n.getMessage("blogPreface"),
BLOG_PRIVATE: chrome.i18n.getMessage("blogPrefacePrivate"),
TOR: chrome.i18n.getMessage("torPreface"),
},
PORTS: {
IRC: "7669",
TOR: "7695",
BLOG: "8084",
TORRENT: "7662",
},
};
/**
* Network Manager for handling WebRTC and network prediction
*/
class NetworkManager {
/**
* Initialize network settings
*/
static async initialize() {
try {
await Promise.all([
browser.privacy.network.peerConnectionEnabled.set({ value: true }),
chrome.privacy.network.networkPredictionEnabled.set({ value: false }),
chrome.privacy.network.webRTCIPHandlingPolicy.set({
value: "disable_non_proxied_udp",
}),
]);
console.info("Network settings initialized");
} catch (error) {
console.error("Network initialization failed:", error);
}
}
}
/**
* Proxy Manager for handling proxy configuration
*/
class ProxyManager {
constructor() {
this.proxyConfig = {
type: proxy_scheme(),
host: proxy_host(),
port: proxy_port(),
};
this.initialize();
}
/**
* Initialize proxy settings
*/
async initialize() {
try {
await this.setupProxyListener();
await this.setupStorageListener();
await this.setupWindowListener();
console.info("Proxy manager initialized");
} catch (error) {
console.error("Proxy initialization failed:", error);
}
}
/**
* Setup proxy request listener
*/
async setupProxyListener() {
browser.proxy.onRequest.addListener(this.handleProxyRequest.bind(this), {
urls: ["<all_urls>"],
});
browser.proxy.onError.addListener(this.handleProxyError.bind(this));
}
/**
* Setup storage change listener
*/
async setupStorageListener() {
browser.storage.onChanged.addListener(this.handleStorageChange.bind(this));
}
/**
* Setup window creation listener
*/
async setupWindowListener() {
const platformInfo = await browser.runtime.getPlatformInfo();
if (browser.windows) {
browser.windows.onCreated.addListener(
this.handleWindowCreation.bind(this)
);
}
}
/**
* Handle proxy requests
* @param {Object} requestDetails Request details
* @return {Object} Proxy configuration
*/
async handleProxyRequest(requestDetails) {
try {
// Handle proxy host requests
if (isProxyHost(requestDetails)) {
return this.proxyConfig;
}
// Handle extension requests
if (this.isExtensionRequest(requestDetails)) {
return this.proxyConfig;
}
// Handle container requests
if (requestDetails.tabId > 0) {
return await this.handleContainerRequest(requestDetails);
}
// Handle direct requests
return await this.handleDirectRequest(requestDetails);
} catch (error) {
console.error("Proxy request handling failed:", error);
return { type: "direct" };
}
}
/**
* Handle container-specific proxy requests
* @param {Object} requestDetails Request details
* @return {Object} Proxy configuration
*/
async handleContainerRequest(requestDetails) {
try {
const tab = await browser.tabs.get(requestDetails.tabId);
const context = await this.getContextIdentity(tab);
if (!context) {
return this.getDefaultProxy();
}
return await this.getContainerProxy(context, requestDetails);
} catch (error) {
console.error("Container request handling failed:", error);
return this.getDefaultProxy();
}
}
/**
* Handle direct (non-container) proxy requests
* @param {Object} requestDetails Request details
* @return {Object} Proxy configuration
*/
async handleDirectRequest(requestDetails) {
try {
// Check for local service ports first
if (isLocalHost(requestDetails.url)) {
const localProxyConfig = this.handleLocalServiceRequest(requestDetails);
if (localProxyConfig !== undefined) {
return localProxyConfig;
}
}
// Handle I2P and proxy hosts
if (i2pHost(requestDetails)) {
console.debug("(proxy) Direct I2P host request:", requestDetails.url);
return this.proxyConfig;
}
if (isProxyHost(requestDetails)) {
console.debug("(proxy) Direct proxy host request:", requestDetails.url);
return this.proxyConfig;
}
// Handle router console requests
if (isRouterHost(requestDetails.url)) {
console.debug(
"(proxy) Direct router console request:",
requestDetails.url
);
return null;
}
// RPC request handling
if (requestDetails.url.includes("rpc")) {
console.debug("(proxy) Direct RPC request:", requestDetails.url);
return this.proxyConfig;
}
// Default to direct connection for non-I2P traffic
console.debug("(proxy) Direct clearnet request:", requestDetails.url);
return { type: "direct" };
} catch (error) {
console.error("Direct request handling failed:", error);
return { type: "direct" };
}
}
/**
* Handle local service port requests
* @private
* @param {Object} requestDetails Request details
* @return {Object|undefined} Proxy configuration or undefined
*/
handleLocalServiceRequest(requestDetails) {
// Local service port mapping
const LOCAL_SERVICES = {
[PROXY_CONFIG.PORTS.IRC]: true, // IRC Console
[PROXY_CONFIG.PORTS.TOR]: true, // Tor Console
[PROXY_CONFIG.PORTS.BLOG]: true, // Blog Console
[PROXY_CONFIG.PORTS.TORRENT]: true, // Torrent Console
};
// Extract port from URL
const url = new URL(requestDetails.url);
const port = url.port;
// Return null proxy for local service ports
if (LOCAL_SERVICES[port]) {
console.debug(
`(proxy) Local service request on port ${port} :`,
requestDetails.url
);
return null;
}
// Let the main proxy logic handle other local requests
return undefined;
}
/**
* Get container identity
* @param {Object} tab Browser tab
* @return {Object} Container context
*/
async getContextIdentity(tab) {
try {
if (
tab.cookieStoreId === "firefox-default" ||
tab.cookieStoreId === "firefox-private"
) {
return null;
}
return await browser.contextualIdentities.get(tab.cookieStoreId);
} catch (error) {
console.error("Context identity lookup failed:", error);
return null;
}
}
/**
* Get container-specific proxy configuration
* @param {Object} context Container context
* @param {Object} requestDetails Request details
* @return {Object} Proxy configuration
*/
async getContainerProxy(context, requestDetails) {
const proxyMap = {
[PROXY_CONFIG.MESSAGES.IRC]: () => this.getIRCProxy(requestDetails),
[PROXY_CONFIG.MESSAGES.TOR]: () => this.getTorProxy(requestDetails),
[PROXY_CONFIG.MESSAGES.BLOG]: () => this.getBlogProxy(requestDetails),
[PROXY_CONFIG.MESSAGES.TITLE]: () => this.getMainProxy(requestDetails),
[PROXY_CONFIG.MESSAGES.ROUTER]: () => this.getRouterProxy(requestDetails),
[PROXY_CONFIG.MESSAGES.TORRENT]: () =>
this.getTorrentProxy(requestDetails),
};
const handler = proxyMap[context.name];
return handler ? await handler() : this.getDefaultProxy();
}
/**
* Get service-specific proxy configurations
*/
getIRCProxy(requestDetails) {
return !requestDetails.url.includes(PROXY_CONFIG.PORTS.IRC)
? this.proxyConfig
: null;
}
getTorProxy(requestDetails) {
return !requestDetails.url.includes(PROXY_CONFIG.PORTS.TOR)
? this.proxyConfig
: null;
}
getBlogProxy(requestDetails) {
return !requestDetails.url.includes(PROXY_CONFIG.PORTS.BLOG)
? this.proxyConfig
: null;
}
getMainProxy(requestDetails) {
if (
requestDetails.url.startsWith(
`http ://${proxy_host()}:${control_port()}/i2psnark/`
)
) {
return null;
}
return this.proxyConfig;
}
getRouterProxy(requestDetails) {
return isRouterHost(requestDetails.url) ? null : this.proxyConfig;
}
getTorrentProxy(requestDetails) {
return requestDetails.url.includes(PROXY_CONFIG.PORTS.TORRENT)
? null
: this.getRouterProxy(requestDetails);
}
/**
* Get default proxy configuration
* @return {Object} Default proxy
*/
getDefaultProxy() {
return { type: "direct" };
}
/**
* Handle proxy errors
* @param {Error} error Proxy error
*/
handleProxyError(error) {
if (error.includes("Invalid proxy server type")) {
console.warn("Invalid proxy configuration:", error);
} else {
console.error("Proxy error:", error);
}
}
/**
* Handle storage changes
*/
async handleStorageChange() {
try {
await this.updateConfig();
await this.setupProxyListener();
} catch (error) {
console.error("Storage update failed:", error);
}
}
/**
* Handle window creation
*/
async handleWindowCreation() {
try {
await this.updateConfig();
await this.setupProxyListener();
} catch (error) {
console.error("Window creation handling failed:", error);
}
}
/**
* Update proxy configuration
*/
async updateConfig() {
console.info(
"Updating proxy configuration:",
`Scheme : ${proxy_scheme()},`,
`Host : ${proxy_host()},`,
`Port : ${proxy_port()},`,
`Control : ${control_host()} :${control_port()}`
);
}
/**
* Check if request is from extension
* @param {Object} requestDetails Request details
* @return {boolean}
*/
isExtensionRequest(requestDetails) {
return requestDetails.originUrl === browser.runtime.getURL("security.html");
}
}
// Initialize managers
NetworkManager.initialize();
const proxyManager = new ProxyManager();
// Export for testing
if (typeof module !== "undefined" && module.exports) {
module.exports = {
NetworkManager,
ProxyManager,
PROXY_CONFIG,
};
}

View File

@@ -1,46 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link href="home.css" rel="stylesheet">
<link href="search.css" rel="stylesheet">
<link href="sidebar.css" rel="stylesheet">
<title>
</title>
</head>
<body>
<div class='background'>
<div class='content'>
<div class="text-section-proxyerr-header">
<h1 id="text-section-proxyerr-header">A Proxy Error has Occurred</h1>
</div>
<div id="i2pbrowser-version">
</div>
<div id="i2pbrowser-description">
<p id="description">I2P in Private Browsing is a webextension to secure and enhance your I2P use in the browser.</p>
<p id="beta">This is an experimental product.</p>
<p id="description2">
If you're seeing this page, it is because a proxy error has occurred. Some information has been provided to help you diagnose the issue.
</p>
</div>
<div id="routerness">
<div class="hideIfI2PRouterOff" id="routerness">
<span id="router-check">Router is ready. Check the proxy diagnostic.</span>
</div>
</div>
<div id="readyness">
<div class="hideIfI2PProxyOff" id="readyness">
<img class="readyness" src="icons/local_up.png"> <span id="proxy-check">Proxy is ready. Something has changed since you were redirected to this page, possibly your proxy connected. Please try your request again.</span>
</div>
</div>
</div>
</div>
<script src="home.js" type="text/javascript"></script>
<script src="messages.js" type="text/javascript"></script>
<script src="content.js" type="text/javascript"></script>
<script src="proxyinfo.js" type="text/javascript"></script>
<script src="consoleinfo.js" type="text/javascript"></script>
</body>
</html>

View File

@@ -1,215 +0,0 @@
/**
* @fileoverview I2P Proxy Status Manager
* Handles proxy connectivity checking and UI updates for I2P extension
*/
// Constants
const PROXY_CONFIG = {
PROXY_URL: "http://proxy.i2p",
CONSOLE_URL: "http://127.0.0.1:7657",
LOGO_PATH: "/themes/console/light/images/i2plogo.png",
FETCH_OPTIONS: { cache: "no-store" },
};
const UI_ELEMENTS = {
PROXY_STATUS: "proxy-check",
READINESS_CLASS: ".readyness",
CONSOLE_LINKS: ".application-info",
HIDDEN_CLASS: "hidden",
};
const MESSAGE_KEYS = {
SUCCESS: "proxySuccessStatus",
FAILURE: "proxyFailedStatus",
};
/**
* UI Manager for handling element visibility
*/
class ProxyUIManager {
/**
* Toggle element visibility
* @param {Element|NodeList} elements - Elements to modify
* @param {boolean} show - Whether to show or hide
*/
/**
* Toggle element visibility with strict null checking
* @param {Element|NodeList} elements - Elements to modify
* @param {boolean} show - Whether to show or hide
*/
static toggleVisibility(elements, show) {
try {
// Validate input
if (!elements) {
throw new Error("Elements parameter is null or undefined");
}
// Convert to array if NodeList
const elementArray =
elements instanceof NodeList ? Array.from(elements) : [elements];
elementArray.forEach((element) => {
// Explicit null check for element and style property
if (element && element.style !== undefined && element.style !== null) {
const action = show ? "remove" : "add";
element.classList[action](UI_ELEMENTS.HIDDEN_CLASS);
console.debug(`(proxyinfo) ${show ? "showing" : "hiding"} element`);
} else {
console.warn(
"(proxyinfo) Invalid element encountered during visibility toggle"
);
}
});
} catch (error) {
console.error("Visibility toggle failed:", error);
throw error; // Re-throw for error boundary handling
}
}
/**
* Update element content by ID
* @param {string} elementId - Target element ID
* @param {string} messageKey - i18n message key
*/
static updateContent(elementId, messageKey) {
try {
const element = document.getElementById(elementId);
if (!element) {
throw new Error(`Element not found : ${elementId}`);
}
element.textContent = chrome.i18n.getMessage(messageKey);
} catch (error) {
console.error("Content update failed:", error);
}
}
/**
* Get elements by selector
* @param {string} selector - CSS selector
* @return {?NodeList}
*/
static getElements(selector) {
try {
return document.querySelectorAll(selector);
} catch (error) {
console.error("Element selection failed:", error);
return null;
}
}
}
/**
* Proxy Status Manager
*/
class ProxyStatusManager {
/**
* Check proxy connectivity
* @return {Promise<void>}
*/
static async checkProxyStatus() {
console.info("(proxyinfo) Checking proxy status");
try {
const response = await fetch(
PROXY_CONFIG.PROXY_URL,
PROXY_CONFIG.FETCH_OPTIONS
);
await this.handleProxySuccess(response);
} catch (error) {
await this.handleProxyError(error);
}
}
/**
* Handle successful proxy connection
* @param {Response} response - Fetch response
*/
static async handleProxySuccess(response) {
console.info("(proxyinfo) Proxy check successful");
ProxyUIManager.updateContent(
UI_ELEMENTS.PROXY_STATUS,
MESSAGE_KEYS.SUCCESS
);
const readinessElements = ProxyUIManager.getElements(
UI_ELEMENTS.READINESS_CLASS
);
if (readinessElements) {
ProxyUIManager.toggleVisibility(readinessElements, true);
}
}
/**
* Handle proxy connection failure
* @param {Error} error - Connection error
*/
static async handleProxyError(error) {
console.error("(proxyinfo) Proxy check failed:", error);
ProxyUIManager.updateContent(
UI_ELEMENTS.PROXY_STATUS,
MESSAGE_KEYS.FAILURE
);
const readinessElements = ProxyUIManager.getElements(
UI_ELEMENTS.READINESS_CLASS
);
if (readinessElements) {
ProxyUIManager.toggleVisibility(readinessElements, false);
}
}
/**
* Check console connectivity
* @return {Promise<void>}
*/
static async checkConsoleStatus() {
const logoUrl = `${PROXY_CONFIG.CONSOLE_URL}${PROXY_CONFIG.LOGO_PATH}`;
console.info("(proxyinfo) Checking console status");
try {
await fetch(logoUrl);
const consoleLinks = ProxyUIManager.getElements(
UI_ELEMENTS.CONSOLE_LINKS
);
if (consoleLinks) {
ProxyUIManager.toggleVisibility(consoleLinks, true);
}
console.info("(proxyinfo) Console check successful");
} catch (error) {
const consoleLinks = ProxyUIManager.getElements(
UI_ELEMENTS.CONSOLE_LINKS
);
if (consoleLinks) {
ProxyUIManager.toggleVisibility(consoleLinks, false);
}
console.error("(proxyinfo) Console check failed:", error);
}
}
}
/**
* Initialize proxy status checking
*/
function initializeProxyChecks() {
try {
ProxyStatusManager.checkProxyStatus();
ProxyStatusManager.checkConsoleStatus();
} catch (error) {
console.error("Proxy initialization failed:", error);
}
}
// Event Listeners
document.addEventListener("DOMContentLoaded", initializeProxyChecks, {
passive: true,
capture: false,
});
// Export for testing
if (typeof module !== "undefined" && module.exports) {
module.exports = {
ProxyStatusManager,
UIManager: ProxyUIManager,
PROXY_CONFIG,
UI_ELEMENTS,
};
}

View File

@@ -1,164 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xml:lang="en-US">
<id>tag:github.com,2008:https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases</id>
<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>2024-10-04T21:40:03Z</updated>
<entry>
<id>tag:github.com,2008:Repository/169256012/2.7.1</id>
<updated>2024-10-04T21:51:55Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/2.7.1"/>
<title>2.7.1</title>
<enclosure url="magnet:?xl=1246<title>2.7.1</title>dn=i2ppb%40eyedeekay.github.io.xpi.torrent<title>2.7.1</title>xt=urn:tree:tiger:eyme2fkldmntehx4m7ujho6fgxklugx2bfsnzti<title>2.7.1</title>xt=urn:ed2k:1bd6f65a3dc2027c9ac265da2c61e6d6<title>2.7.1</title>xt=urn:aich:t7hfnrsgwjjeh5nctj5qe7kwaclnahbc" 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&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/2.6.1</id>
<updated>2024-08-20T13:31:21Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/2.6.1"/>
<title>2.6.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&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/2.5.9</id>
<updated>2024-07-10T18:33:56Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/2.5.9"/>
<title>2.5.9</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (2.5.9-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Minor refactoring, simplifications&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Thu, 10 July 2024 13:40:40 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (1.49-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/1.49</id>
<updated>2023-12-26T18:39:31Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/1.49"/>
<title>1.49</title>
<content type="html">&lt;h1&gt;I2P in Private Browsing Mode&lt;/h1&gt;
&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (1.49-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/1.47</id>
<updated>2023-06-11T18:11:50Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/1.47"/>
<title>1.47</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (1.47-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;only reset the theme if we&#39;re resetting from one we own&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Sun, 11 Jun 2023 14:05:08 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (1.45-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/1.45</id>
<updated>2023-06-11T04:18:50Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/1.45"/>
<title>1.45</title>
<content type="html">&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Sat, 10 Jun 2023 23:51:21 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (1.43-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix wrong color pageAction icon&lt;/li&gt;
&lt;li&gt;Add router status to proxy error page&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Sun, 24 Oct 2022 09:35:20 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (1.41-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/1.43</id>
<updated>2022-10-25T01:46:43Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/1.43"/>
<title>1.43</title>
<content type="html">&lt;p&gt;Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (1.43-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix wrong color pageAction icon&lt;/li&gt;
&lt;li&gt;Add router status to proxy error page&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Sun, 24 Oct 2022 09:35:20 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (1.41-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/1.41</id>
<updated>2022-10-25T00:06:24Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/1.41"/>
<title>1.41</title>
<content type="html">&lt;p&gt;restore manifest.json to desktop version, android still doesn&#39;t have …&lt;/p&gt;
&lt;p&gt;…the required APIs&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.133</id>
<updated>2022-05-23T20:31:26Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.133"/>
<title>0.133</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.133-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add machine translations for several languages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Mon, 32 May 2022 16:28:06 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.131-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<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>
<content>No content.</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
</feed>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

166
script.js
View File

@@ -1,166 +0,0 @@
function hasI2PLocation(request) {
let response = false;
if (request.req === "i2p-location") {
let tag = document.querySelector('meta[http-equiv="i2p-location"]');
if (tag != undefined) {
console.debug("(script) i2p site discovered", tag);
if (tag) response = tag.content;
}
tag = document.querySelector('meta[http-equiv="x-i2p-location"]');
if (tag != undefined) {
console.debug("(script) i2p site discovered", tag);
if (tag) response = tag.content;
}
}
return response;
}
function hasTorrentResource(request) {
let response = false;
if (!i2pHost(request.URL)) return response;
if (request.req === "i2p-torrentlocation") {
let tag = document.querySelector('meta[http-equiv="i2p-torrentlocation"]');
if (tag != undefined) {
console.debug("(script) torrent resource", tag);
response = i2pTorrent(tag);
}
tag = document.querySelector('meta[http-equiv="x-i2p-torrentlocation"]');
if (tag != undefined) {
console.debug("(script) torrent resource", tag);
response = i2pTorrent(tag);
}
}
return response;
}
function hasExtraLocation(request) {
var response = false;
console.info("(script) page" + request);
torrentLocation = hasTorrentResource(request);
if (torrentLocation) return torrentLocation;
i2pLocation = hasI2PLocation(request);
if (i2pLocation) return i2pLocation;
return Promise.resolve({ content: response });
}
browser.runtime.onMessage.addListener(hasExtraLocation);
window.document.onload = function (e) {
console.log("presetting x-i2p-torrentlocation");
var tag = document.querySelector('meta[http-equiv="i2p-torrentlocation"]');
if (tag != undefined) {
console.log(tag);
response = i2pTorrent(tag);
}
var tag = document.querySelector('meta[http-equiv="x-i2p-torrentlocation"]');
if (tag != undefined) {
console.log(tag);
response = i2pTorrent(tag);
}
};
console.log("presetting x-i2p-torrentlocation");
var tag = document.querySelector('meta[http-equiv="i2p-torrentlocation"]');
if (tag != undefined) {
console.log(tag);
response = i2pTorrent(tag);
}
var tag = document.querySelector('meta[http-equiv="x-i2p-torrentlocation"]');
if (tag != undefined) {
console.log(tag);
response = i2pTorrent(tag);
}
function i2pTorrent(tag) {
let response = "no-alt-location";
if (tag) {
response = tag.content;
var imgs = document.getElementsByTagName("img");
console.log("rewriting torrent link");
for (let img of imgs) {
let tmpsrc = new URL(img.src);
if (tmpsrc.host == location.host) {
img.src =
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
img.onerror = function () {
img.src = tmpsrc;
};
}
}
var videos = document.getElementsByTagName("video");
for (let video of videos) {
video.setAttribute("preload", "none");
let tmpsrc = new URL(video.currentSrc);
if (tmpsrc.host == location.host) {
if (!video.innerHTML.includes("127.0.0.1")) {
innerHTML = video.innerHTML;
topInnerHTML = video.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + "/"
);
// let url = new URL("http://127.0.0.1:7657/i2psnark/"+location.host+"/"location.path)
console.log(
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname
); //+"/"location.path)
video.src =
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
video.innerHTML = topInnerHTML; // + innerHTML;
video.onerror = function () {
console.log("video error");
video.innerHTML = topInnerHTML + innerHTML;
};
}
}
}
var audios = document.getElementsByTagName("audio");
for (let audio of audios) {
audio.setAttribute("preload", "none");
let tmpsrc = new URL(audio.currentSrc);
if (tmpsrc.host == location.host) {
if (!audio.innerHTML.includes("127.0.0.1")) {
innerHTML = audio.innerHTML;
topInnerHTML = audio.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + "/"
);
//console.log("http://127.0.0.1:7657/i2psnark/" + location); //.host+"/"location.path)
console.log(
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname
); //+"/"location.path)
audio.src =
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
audio.innerHTML = topInnerHTML; // + innerHTML;
audio.onerror = function () {
console.log("audio error");
audio.innerHTML = topInnerHTML + innerHTML;
};
}
}
}
var links = document.getElementsByTagName("a");
for (let link of links) {
let tmpsrc = new URL(link.href);
if (tmpsrc.host == location.host) {
if (
!tmpsrc.pathname.endsWith("html") &&
!tmpsrc.pathname.endsWith("htm") &&
!tmpsrc.pathname.endsWith("php") &&
!tmpsrc.pathname.endsWith("jsp") &&
!tmpsrc.pathname.endsWith("asp") &&
!tmpsrc.pathname.endsWith("aspx") &&
!tmpsrc.pathname.endsWith("atom") &&
!tmpsrc.pathname.endsWith("rss") &&
!tmpsrc.pathname.endsWith("/") &&
tmpsrc.pathname.includes(".")
) {
link.href =
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
link.onerror = function () {
window.location.href = tmpsrc.href;
};
}
}
}
}
return response;
}

1066
scrub.js

File diff suppressed because it is too large Load Diff

View File

@@ -1,41 +0,0 @@
.topnav {
overflow: hidden;
min-height: 3rem;
padding: .5rem;
min-width: 64%;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
}
.topnav a {
float: left;
display: inline-block;
text-align: center;
padding: 14px 16px
}
.topnav a:hover {
background-color: #ddd
}
.topnav a.active {
background-color: #2196f3;
color: #fff
}
.topnav input[type=search] {
padding: 6px;
border: none;
margin-top: 8px;
color: #e6e6e7
}
.topnav input[type=submit] {
float: right;
padding: 6px;
border: none;
margin-top: 8px;
color: #e6e6e7;
margin-right: 16px
}
#search-query {
color: #1f1a24
}
#search-submit {
color: #1f1a24
}

View File

@@ -1,71 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link href="search.css" rel="stylesheet">
<link href="home.css" rel="stylesheet">
<link href="info.css" rel="stylesheet">
<title>
</title>
</head>
<body>
<div id="browserpanel" class="content">
<div class="panel">
<div class="section-header panel-section panel-section-header" id="headline">
<div class="text-section-header" id="text-section-header">
<h1 id="text-section-header">I2P Site Properties | This I2P Site has peer-to-peer resources.</h1>
</div>
</div>
</div>
<div class="panel">
<ul>
<li>
<div class="address-info">
<div id="addresstype">
<span id="TypeLabel">Address Type:</span> <span id="Type"></span>
<div id="TypeInfo">
<span id="AddressInfo"></span>
</div>
</div>
</div>
</li>
<li>
<div class="tls-info">
<div id="sitecert">
<span id="CertLabel">Certificate Information:</span> <span id="Cert"></span>
<div id="CertInfo">
<span id="AddressCertInfo"></span>
</div>
</div>
</div>
</li>
<li>
<div id="signingcert">
<span id="SignedLabel">Signed By:</span> <span id="Signed"></span>
</div>
</li>
</ul>
</div>
<div class="panel">
<p>
To help distribute the site content, use the links below to join the swarm.
</p>
<ul>
<li>
<div class="address-info">
<span id="TorrentTypeLabel">Torrent Links:</span> <span id="Type"></span>
<div id="TorrentTypeInfo">
</div>
</div>
</li>
</ul>
</div>
</div>
<script src="cert.js"></script>
<script src="torrent.js"></script>
</body>
</html>

View File

@@ -1,55 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link href="search.css" rel="stylesheet">
<link href="home.css" rel="stylesheet">
<link href="info.css" rel="stylesheet">
<title>
</title>
</head>
<body>
<div class="content" id="browserpanel">
<div class="panel">
<div class="section-header panel-section panel-section-header" id="headline">
<div class="text-section-header" id="text-section-header">
<h1 id="text-section-header">I2P Site Properties</h1>
</div>
</div>
</div>
<div class="panel">
<ul>
<li>
<div class="address-info">
<div id="addresstype">
<span id="TypeLabel">Address Type:</span> <span id="Type"></span>
<div id="TypeInfo">
<span id="AddressInfo"></span>
</div>
</div>
</div>
</li>
<li>
<div class="tls-info">
<div id="sitecert">
<span id="CertLabel">Certificate Information:</span> <span id="Cert"></span>
<div id="CertInfo">
<span id="AddressCertInfo"></span>
</div>
</div>
</div>
</li>
<li>
<div id="signingcert">
<span id="SignedLabel">Signed By:</span> <span id="Signed"></span>
</div>
</li>
</ul>
</div>
</div>
<script src="cert.js"></script>
</body>
</html>

View File

@@ -1,15 +0,0 @@
/* edgar showhider CSS file */
#show {display:none; }
#hide {display:block; }
#show:target {display: block; }
#hide:target {display: none; }
#shownav {display:none; }
#hidenav {display:block; }
#shownav:target {display: block; }
#hidenav:target {display: none; }
#donate {display:none; }
#hidedonate {display:block; }
#donate:target {display: block; }
#hidedonate:target {display: none; }

View File

@@ -1,23 +0,0 @@
li {
width: 90%;
margin-left: 0
}
ul {
width: 100%
}
button {
width: 45%;
text-align: center
}
#applicationExplain {
float: unset
}
.button-list {
display: inline
}
#hidden {
display: none
}
.hidden {
display: none
}

165
style.css
View File

@@ -1,165 +0,0 @@
/* edgar default CSS file */
body {
font-family: "Roboto";
font-family: monospace;
text-align: justify;
background-color: #373636;
color: whitesmoke;
font-size: 1.15em;
}
ul {
width: 55%;
display: block;
}
ol {
width: 55%;
display: block;
}
li {
margin-top: 1%;
}
p {
max-width: 90%;
margin-top: 1%;
margin-left: 3%;
margin-right: 3%;
}
img {
float: left;
top: 5%;
left: 5%;
max-width: 60%;
display: inline;
padding-right: 2%;
}
.inline {
display: inline;
}
.link-button:focus {
outline: none;
}
.link-button:active {
color: red;
}
code {
font-family: monospace;
border-radius: 5%;
padding: 1%;
border-color: darkgray;
font-size: .9em;
}
a {
color: #C6D9FE;
padding: 1%;
}
ul li {
color: #C6D9FE;
}
iframe {
background: aliceblue;
border-radius: 15%;
margin: 2%;
}
.container {
width: 36vw;
height: 64vh;
display: inline-block;
margin: 0;
padding: 0;
}
.editor-toolbar a {
display: inline-block;
text-align: center;
text-decoration: none !important;
color: whitesmoke !important;
}
#feed {
width: 60vw;
height: unset !important;
margin: 0;
padding: 0;
float: right;
background-color: #373636;
color: whitesmoke;
border: #C6D9FE solid 1px;
}
.thread-post,
.thread {
color: whitesmoke !important;
background-color: #373636;
border: 1px solid darkgray;
font-size: inherit;
padding-top: 1%;
padding-bottom: 1%;
}
.thread-post {
margin-left: 4%;
}
input {
text-align: center;
color: whitesmoke !important;
background-color: #373636;
border: 1px solid darkgray;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
padding-top: 1%;
padding-bottom: 1%;
}
.thread-hash {
text-align: right;
color: whitesmoke !important;
background-color: #373636;
border: 1px solid darkgray;
font-size: inherit;
padding-top: 1%;
padding-bottom: 1%;
}
.post-body {
text-align: left;
color: whitesmoke !important;
font-size: inherit;
padding-top: 1%;
padding-bottom: 1%;
}
#show {display:none; }
#hide {display:block; }
#show:target {display: block; }
#hide:target {display: none; }
#shownav {display:none; }
#hidenav {display:block; }
#shownav:target {display: block; }
#hidenav:target {display: none; }
#navbar {
float: right;
width: 15%;
}
#returnhome {
font-size: xxx-large;
display: inline;
}
h1 {
display: inline;
}

Some files were not shown because too many files have changed in this diff Show More