diff --git a/LICENSE.html b/LICENSE.html index 08f31ed..79b4f45 100644 --- a/LICENSE.html +++ b/LICENSE.html @@ -8,90 +8,113 @@ +
-- Copyright 2018 -
-- 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. -
-Copyright 2018
+
+ Copyright 2018
+
+
+ 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.
+
+
+
+
+ Get the source code:
+
+
+
+
+
+
+ Show license
+
+
+
+ Copyright 2018
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
@@ -110,9 +133,10 @@ 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.
-
- Hide license
-
+
+ Hide license
+
+
+ For information about the “Goals guiding the Goals” see:
+
+ [PRINCIPLES]
+
+ .
+
+ While Windows is the primary platform, some goals may represent cross-platform + utility as well. Since a portable jpackage really only needs slightly different + arguments on different platforms, cross-platform support is often low-cost. +
+
+ [X]
+
+ Cleanly separate jpackage generation phase from NSIS generation phase
+
+ [X]
+
+ Enable archive builds for generating Windows
+
+ .exe
+
+ ’s from Linux hosts
+
+ [X]
+
+ NSIS installer
+
+ [X]
+
+ Portable, directory-based install
+
+ [ ]
+
+ Windows Service Support
+
+ [X]
+
+ NSIS installer in Default Directory
+
+ [X]
+
+ NSIS installer in Portable Directory
+
+ [X]
+
+ Handle admin and non-admin updates automatically
+
+ [ ]
+
+ Zip-Only portable updater
+
+ [X]
+
+ Detect and handle un-bundled routers on the host system, policy of non-interference
+
+ [X]
+
+ Wait for router console to be ready to launch router-console browser
+
+ [X]
+
+ Wait for proxy to be ready to launch I2P Web Browser
+
+ [X]
+
+ Launch browser instead of router when a repeat-launch is detected
+
+ [X]
+
+ GUI component for launching each available component
+
+ [X]
+
+ Introduce
+
+ browser.properties
+
+ for customization
+
+ [ ]
+
+ Registry-based browser discovery
+
+ Firefox
+
+
+ Chromium
+
+
+ [X]
+
+ Use identical extensions in Firefox-based and Chromium-based browsers wherever possible
+
+ [X]
+
+ Always use a dedicated, I2P Easy-Install specific profile directory
+
+ [X]
+
+ Always configure an HTTP Proxy, and safe access to the router console
+
+ [X]
+
+ Provide I2P-Specific integrations to the browser UI through WebExtensions
+
+ [X]
+
+ Operate in “Strict” mode where the maximum level of defenses are up
+
+ [X]
+
+ Operate in “Usability” mode where defense is balanced with utility
+
+ [X]
+
+ Operate in “App” mode where we work as a single-purpose window where it is hard to access arbitrary, potentially malicious resources
+
+ [X]
+
+ All I2P-Specific profiles should be possible to generate automatically, sight-unseen
+
+ [X]
+
+ When using Firefox, download extension updates automatically, from AMO, using an outproxy
+
+ [X]
+
+ Integrate I2P in Private Browsing for to provide UI for I2P within Firefox
+
+ [X]
+
+ Prevent WebRTC proxy escapes by setting mode
+
+ 4
+
+
+ disable_non_proxied_udp
+
+ or higher
+
+ [X]
+
+ Customize panel for Firefox
+
+ App
+
+ mode(Not required for Chromiums)
+
+ [X]
+
+ When using Chromium, load extensions from source and freeze them without updates to prevent unproxied updating.
+
+ [X]
+
+ Integrate
+
+ I2PChrome.js
+
+ to provide UI for I2P within Chrome
+
+ [X]
+
+ Prevent WebRTC proxy escapes by setting mode
+
+ 4
+
+
+ disable_non_proxied_udp
+
+
+ [X]
+
+ Disable Javascript by default with NoScript
+
+ [X]
+
+ Enforce HTTPS where available with HTTPS Everywhere
+
+ OR
+
+ HTTPS only Mode
+
+ [ ]
+
+ Proactively enumerate and disable “Fine” fingerprinting vectors where possible(ongoing)
+
+ [ ]
+
+ When running in Tor Browser, look as much like Tor Browser as possible but use an outproxy(ongoing)
+
+ [X]
+
+ Enable Javascript by default but limit it with jShelter
+
+ [X]
+
+ Enforce HTTPS where available with HTTPS Everywhere
+
+ OR
+
+ HTTPS only Mode
+
+ [X]
+
+ Limit attempts to fetch useless junk like advertising with an up-to-date uBlock Origin
+
+ [X]
+
+ Limit attempts to reach clearnet CDN’s with LocalCDN
+
+ [X]
+
+ Isolate
+
+ .onion
+
+ traffic from
+
+ outproxy
+
+ traffic and
+
+ .i2p
+
+ traffic using Onion in Container Tabs
+ Copyright 2018
+
+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.
+
+
+ Hide license
+
+ + This document explains the ideas which are guiding the development of + features specific to the I2P Easy-Install bundle. +
+
+ The general idea is that it is possible, on most platforms, to make I2P
+ post-install configuration much simpler and much less error-prone. Each
+ section of this document has guidance for a different “Meta-Feature” of
+ the I2P Easy-Install Bundle. For granular, specific information about
+ goals both achieved and un-achieved see
+
+ [GOALS]
+
+ .
+
+ The I2P Easy-Install Bundle for Windows considers basic configuration tasks
+ “Features” when they can be automated. The quintessential example of this
+ is
+
+
+ Browser Profile Configuration
+
+
+ where it injects settings into a
+ pre-existing browser from the host system. Solving this problem pre-dates
+ the evolution of
+
+ i2p.firefox
+
+ into a fully-fledged I2P router distribution
+ and has been the defining goal of this project for its entire existence.
+
+ However, what good browser profile configuration is, is as complicated as + how to deploy it. I2P has a unique opportunity to decide how it will handle + problems related to browsing in its own context while the network grows + and synthesize a useful number of safe browser configurations while also + reducing existing browser config fragmentation. +
++ Easy-Install attempts to limit the number of “Coarse Fingerprints” which it will + produce by default to a predictable number. A Coarse Fingerprint is basically + a fingerprint “That we know we’re making” by offering the ability to configure + something differently. +
+
+ [supported browsers]*[variant configurations]
+
+ + At this time it offers configuration for Tor Browser, Firefox, Waterfox, and + LibreWolf for Firefox-based browsers, and Ungoogled-Chromium, Chromium, Brave, + Chrome, and Edgium configuration for Chromium-based browsers. That is a total + of + + Nine(9) + + main browsers. There are + + Two(2) + + variant configurations, + which correspond to “Strict” and “Usability” Modes. That makes a total of + + Eighteen(18) + + coarse browser fingerprints produced by this bundle. It also + has the ability to launch in a “Restricted to Apps” mode where it is only + possible to visit I2P sites using links on the I2P application interface(router + console, hidden services manager) itself. +
++ This is not on its face as good as having an almost entirely unified browser + fingerprint like Tor Browser attempts to have. It is a simple fact that 18 + is greater than one. Every active attempt to gain granularity from a browser + outside of off-the-shelf Fingerprinting techniques is classified as “Fine” + fingerprinting. It is unpredictable, and harder to defend against, more likely + to exhibit novelty, and more likely to be affected by the host browser’s + security. When fingerprinters get this creative disabling Javascript by default + is the most complete defense. This is the primary characteristic of Strict Mode, + it disables Javascript by default with NoScript. + + Strict Mode is the only + + + partial defense against fine-fingerprinting offered by this product. + + Even + disabling Javascript does not close all fine fingerprinting vectors, but it + does close most of them and reduce attack surface significantly. It is recommended + in combination with Tor Browser, and attempts to be somewhat closer to Tor Browser + than Usability Mode. It is the default mode of operation. +
++ In contrast to Strict Mode, Usability mode offers the greatest agreeable number + of browser features enabled by default, including a restricted subset of Javascript. + It makes no attempt at all to look like Tor Browser, even when using Tor Browser + as a host browser. It does attempt to optimize the browser for use within I2P, including + specific optimizations to keep traffic in-network or even retrieve information which is + stored on the localhost(while avoiding cache timing attacks). It does this by deploying + an alternative loadout of extensions, including ones which block advertising by default + and which include a cache of CDN resources in local browser storage. +
++ Because of the relatively high configurability of Firefox-based browser + telemetry, Firefox-based browsers are preferred over Chromium-based browsers. + Chromium-based browsers will be used by default + + only + + if a Firefox based + browser is unavailable. Only Firefox-variant releases of the Extended Support + Release or of the latest stable release are supportable. If a variant lags + behind Firefox releases, it will be dropped. The primary reason for the default + “Ordering” of Firefox Profile Selection is the speed at which updates can be + expected to be applied. +
++ Chromium-based browser selection is more subjective and slightly more ad-hoc. + Chromium browsers are chosen based on the variant’s stated goals and perceived + efficacy in pursuing those goals. For example, if a Chromium distribution is + focused on removing telemetry or providing anti-fingerprinting, it is chosen + before a Chromium that is provided by Google or integrated tightly with the + host OS. This is a matter of judgement on my part and if you disagree you should + open an issue and argue with me. I’m not infallible, I’ll listen. +
+
+ With all other browsers attempts at anti-fingerprinting are a moot point. It offers
+ limited configuration options using widely-supported generic browser configuration
+ means. If it doesn’t recognize a Firefox or Chromium browser on the host, then it
+ sets the common proxy environment variables
+
+ http_proxy
+
+
+ https_proxy
+
+
+ ALL_PROXY
+
+ and
+
+ NO_PROXY
+
+ to their appropriate values before launching the browser configuration
+ and attempts to set a directory for the runtime configuration(Profile) by changing
+ to the profile directory.
+
Copyright 2018
+
+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.
+
+
+ Hide license
+
+ + This is a pre-release of the I2P Easy-Install Bundle for Windows. + This changes how the I2P bundle and browser profile manager are installed and integrated with the host system. + The Easy-Install bundle is now a “portable” system that can be moved to different locations within or between Windows file-systems while retaining all built-in functionality. + A shortcut for starting the I2P router is still provided by the installer for convenience, but the shortcuts for starting the I2P Browser are now integrated with the I2P desktop UI. +
++ The browser profile manager itself has been split away from the monolithic I2P router+Java/jpackage, and moved into an I2P plugin managed by the router. + While this was done primarily to reduce how complex the existing code was, this also results in behavior which is closer to the main distribution of I2P for Windows and will lead to a more flexible installer, which can bundle additional default plugins and may be suitable for installation as a Windows service. + I2P Plugins can also be updated independently of the router that hosts them, so it will be possible to update the browser profile manager independently of the router itself. + It also means that the browser profile manager can be un-installed by uninstalling the plugin, and much more importantly that the browser profile manager is now compatible with all Java I2P distributions. +
++ + Why a dev build 3 weeks before the release? + +
++ By further delineating the components of the bundle, these changes also affected how the release process happens. + In particular the build process of each component has been encapsulated in a CI description which can be reproduced on a local PC. + This simplifies and automates the build process by ensuring that up-to-date build tools are installed in a brand-new container for every build. + In effect this should speed up the release process for I2P Easy-Install for Windows considerably. + This release is a test-run of the new process, so I can document what is going on. + It breaks down roughly like this: +
+
+ i2p.plugins.firefox
+
+ and make the resulting artifacts available. During this process, I must insert 1 HSM and enter 1 password. (This part used to be about 30 steps, now it takes 1)
+
+ i2p.firefox
+
+ project and make the resulting artifacts available. This process produces only unsigned artifacts identified by their hashes, and is non-interactive. (This part used to be around 60 steps the first time, and 40 steps each additional time)
+
+ i2p.firefox
+
+ updates are signed in their
+
+ .su3
+
+ form. The
+
+ NSIS
+
+ -powered
+
+ .exe
+
+ installer is the current updater. The next step is to sign
+
+ just this installer
+
+ and generate a torrent of the result. (This process used to depend on the previous build process and couldn’t be done independently. Now it takes about 30 seconds)
+ + For you the end user, nothing much should change. + You’ll get your updates a lot faster, and have more options available for testing. + The same installer is used for the updater, and the process is handled the same way. + However for developers, testers, and maintainers, this release will result in big changes for the better. +
+
+ This release still embeds a
+
+ 2.4.0
+
+ Java I2P router. No changes have been made to update the embedded router.
+ Network behavior will be unchanged until the official
+
+ 2.5.0
+
+ release.
+
Copyright 2018
+
+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.
+
+
+ Hide license
+
+ - It is important to set up a signed update server so that people are able to - safely and anonymously update your I2P bundle. -
-- This process depends on my ability to push releases to github. If you are - forking, setting up a dev server, or taking over because I got hit by a bus, - you’ll need to do it the complete way. -
-
- For as long as I am building updates, you will be able to mirror the jpackaged
- Windows bundle by cloning the repository
-
- https://github.com/eyedeekay/i2p
-
- and
- running the
-
- make docker run
-
- target in that repository. You can retrieve the
- base32 address of your update server by viewing the log with
-
- docker logs eephttpd-jpackage | grep b32.i2p | tee eephttpd-address.md
-
- . To
- update the site, run
-
- ./update.site.sh
-
- in that repository.
-
- Once you have cloned the repository and started the container with
-
- make docker run
-
- , you can simply add
-
- path/to/repo/update-site.sh
-
- to your
-
- crontab
-
- and it will update at an interval of your choosing.
-
- TODO: describe how to do it with less of the awesome fancy stuff I put together - to make it easier on myself to keep an update server going. -
-Copyright 2018
+
+ Setting up an Update Server for an I2P Bundle
+
+
+ It is important to set up a signed update server so that people are able to
+ safely and anonymously update your I2P bundle. There are two sort of “Levels”
+ to what you might do to provide updates to your users. Each of them requires the
+ generation of a
+
+ signed newsfeed
+
+ ,
+ which also serves as a way to provide information to your users about updates,
+ features, and security events.
+
+
+ This project,
+
+ i2p.firefox
+
+ a.k.a. the “I2P Easy Install Bundle” uses the “Executable”
+ update subtype, meaning that it capable of installing itself by executing code as the
+ user who runs the update, which is usually the main user of a Windows 10 or 11 PC.
+ This update subtype is highly flexible, but requires the creation of a “Scripted” using
+ something like
+
+ NSIS
+
+ ,
+
+ wixl
+
+ , or custom code. Other update types include ZIP (used by
+ the core I2P product) and DMG(used by Mac OSX).
+
+
+ Static HTTP Update URL over I2P
+
+
+ Bittorrent Update URL over I2P
+
+
+
+ If you choose to do this, consider using zzzot to host your open tracker instead of a normal site
+
+ ,
+ which you can obtain from
+
+ this I2P link
+
+ .
+
+
+
+
+ Get the source code:
+
+
+
+
+
+
+ Show license
+
+
+
+ Copyright 2018
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
@@ -147,9 +162,10 @@ 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.
-
- Hide license
-
+
+ Hide license
+
+
- To build this, you will need the following software packages - (all available in Debian and Ubuntu, see WSL section below): -
-- These need to be installed in the environment where the NSIS - Package is build, NOT the environment where the java package - is built. These may be different, because you will need to - use a system which provides a Unix-like environment on top of - a Windows system. You can use WSL or Cygwin, and more detailed - instructions are provided below. -
-- Building for Windows target from Linux is not possible unless - you obtain a Windows package from my github. -
-
- In addition, you will need the NSIS plugin “ShellExecAsUser” which you can get from the
-
- NSIS Wiki Page
+
+ /
- . In order to install
- the plugin on Debian, Ubuntu, or using
-
- WSL
-
- , you can download the:
-
- 7zip release
-
- and copy the content of
-
- Plugins
-
- to
-
- /usr/share/nsis/Plugins
-
- .
-
cp -rv Plugins/* /usr/share/nsis/Plugins/
-
-
-
- Prerequisites:
-
- You need to have OpenJDK 14 or greater installed and configured
- with your
-
- %JAVA_HOME%
-
- environment variable configured and
-
- %JAVA_HOME%/bin
-
- on
- your
-
- %PATH%
-
- . You need to have Apache Ant installed and configured with
-
- %ANT_HOME%
-
- environment variable configured and
-
- %ANT_HOME%/bin
-
- on your
-
- %PATH%
-
- . You must have
- Cygwin installed. You must have
-
- NSIS.exe
-
- installed and
-
- makensis
-
- available on your
-
- %PATH%
-
- . You must have Git for Windows installed. When installing git for Windows,
- you should select “Checkout as is, commit as is” and leave line-endings alone.
-
- The Windows build tools listed above must be installed on the Windows host machine. -
-- TODO: Add links to the respective instructions for each of these. -
-
-
- Note that after the dependencies are installed, this step is automated
-
-
- with
+
+
+ SHORTCUT:
+
+ All the build artifacts can be produced by the description in the
+ I2P Easy-Install Bundle for Windows, (Formerly)I2P Browsing Profile for Firefox
+
+
+ Features:
+
+
+
+
+ Build Dependencies:
+
+
- ./build.sh
+ .yaml
+
+ files in
+
+ .github/workflows
.
-
- In order to include a jpackaged(dependency-free) I2P router in the Profile
- Bundle you will need to build the jpackaged I2P router as an “App Image” on
- a Windows system and place it into a directory called
-
- I2P
-
- in your
-
- i2p.firefox
-
- checkout. Building without a jpackage is no longer supported.
-
- Assuming a working java and jpackage environment on your Windows system, the - following command should generate a suitable “App Image” in a directory - called “I2P.” -
- export I2P_VERSION=0.9.49
+ These can be run on Github’s infrastructure, or on a local(Windows) PC using
+
+ https://github.com/nektos/act
+
+ .
+ Doing things this way deals with all the dependency issues that Windows doesn’t really give you a good way to deal with automatically.
+ It also guarantees that the same base container and environment gets used for every build no matter what machine it runs on.
+ I highly recommend you use either Github CI or
+
+ nektos/act
+
+ for dev builds of this software, as it
+
+ automates literally every one of the steps
+
+ .
+ CI-based builds follow the
+
+ WSL
+
+ version of the instructions.
+
+
+ To build this, you will need the following software packages
+ (all available in Debian and Ubuntu, see WSL section below):
+
+
+ -
+ make
+
+ -
+ nsis
+
+ -
+ dos2unix
+
+ -
+ curl
+
+ -
+ jq
+
+
+
+ These need to be installed in the environment where the NSIS
+ Package is build, NOT the environment where the java package
+ is built. These may be different, because you will need to
+ use a system which provides a Unix-like environment on top of
+ a Windows system. You can use WSL or Cygwin, and more detailed
+ instructions are provided below.
+
+
+ Building for Windows target from Linux is not possible unless
+ you obtain a Windows package from my github.
+
+
+ In addition, you will need the NSIS plugin “ShellExecAsUser” which you can get from the
+
+ NSIS Wiki Page
+
+ . In order to install
+ the plugin on Debian, Ubuntu, or using
+
+ WSL
+
+ , you can download the:
+
+ 7zip release
+
+ and copy the content of
+
+ Plugins
+
+ to
+
+ /usr/share/nsis/Plugins
+
+ .
+
+ cp -rv Plugins/* /usr/share/nsis/Plugins/
+
+
+ Including a jpackaged I2P Router
+
+
+
+ Prerequisites:
+
+ You need to have OpenJDK 14 or greater installed and configured
+ with your
+
+ %JAVA_HOME%
+
+ environment variable configured and
+
+ %JAVA_HOME%/bin
+
+ on
+ your
+
+ %PATH%
+
+ . You need to have Apache Ant installed and configured with
+
+ %ANT_HOME%
+
+ environment variable configured and
+
+ %ANT_HOME%/bin
+
+ on your
+
+ %PATH%
+
+ . You must have
+ Cygwin installed. You must have
+
+ NSIS.exe
+
+ installed and
+
+ makensis
+
+ available on your
+
+ %PATH%
+
+ . You must have Git for Windows installed. When installing git for Windows,
+ you should select “Checkout as is, commit as is” and leave line-endings alone.
+
+
+ The Windows build tools listed above must be installed on the Windows host machine.
+
+
+ TODO: Add links to the respective instructions for each of these.
+
+
+
+ Note that after the dependencies are installed, this step is automated
+
+
+ with
+
+ ./buildscripts/build.sh
+
+ .
+
+
+
+ In order to include a jpackaged(dependency-free) I2P router in the Profile
+ Bundle you will need to build the jpackaged I2P router as an “App Image” on
+ a Windows system and place it into a directory called
+
+ I2P
+
+ in your
+
+ i2p.firefox
+
+ checkout. Building without a jpackage is no longer supported.
+
+
+ Assuming a working java and jpackage environment on your Windows system, the
+ following command should generate a suitable “App Image” in a directory
+ called “I2P.”
+
+ export I2P_VERSION=0.9.49
cp -R ../i2p.i2p/pkg-temp/lib build/lib
jpackage --type app-image --name I2P --app-version "$I2P_VERSION" \
--verbose \
--resource-dir build/lib \
--input build/lib --main-jar router.jar --main-class net.i2p.router.RouterLaunch
-
- Transfer the I2P directory to the machine where you build i2p.firefox if
- necessary, then complete the regular build instructions. If a jpackaged I2P router
- isn’t present to use at build time, the inclusion will be skipped automatically
- with a non-fatal warning.
-
-
- Pre-built app-images are available from my daily releases at:
-
- https://github.com/eyedeekay/i2p.plugins.firefox/releases/
+
+ Transfer the I2P directory to the machine where you build i2p.firefox if
+ necessary, then complete the regular build instructions. If a jpackaged I2P router
+ isn’t present to use at build time, the inclusion will be skipped automatically
+ with a non-fatal warning.
+
+
+ Pre-built app-images are available from my daily releases at:
+
+ https://github.com/eyedeekay/i2p.plugins.firefox/releases/
-
- Windows Build
-
-
- After installing the dependencies and completing the preparations,
- just run
-
- make
-
- . This will produce the install.exe - the windows
- installer, which sets up the shortcuts to launch Firefox on Windows.
- Building without a jpackage is no longer supported.
-
-
- When generating a build it’s important to make sure that the
- licenses for all the bundled softare are included. This should happen
- automatically. When bundling software, describe the terms and where
- they are applied in the
-
- LICENSE.index
-
- , then add the full license
- to the
-
- licenses
-
- directory. Then, add the full license to the
-
- cat
-
- command in the
-
- build/licenses
-
- make target. The build/licenses
- target is run automatically during the build process.
-
-
- End-to-End Windows build process using WSL(
-
- Recommended
-
- )
-
-
-
- See
+
+ Windows Build
+
+
+ After installing the dependencies and completing the preparations,
+ just run
- config.sh
+ make
+
+ . This will produce the install.exe - the windows
+ installer, which sets up the shortcuts to launch Firefox on Windows.
+ Building without a jpackage is no longer supported.
+
+
+ When generating a build it’s important to make sure that the
+ licenses for all the bundled softare are included. This should happen
+ automatically. When bundling software, describe the terms and where
+ they are applied in the
+
+ LICENSE.index
+
+ , then add the full license
+ to the
+
+ licenses
+
+ directory. Then, add the full license to the
+
+ cat
+
+ command in the
+
+ build/licenses
+
+ make target. The build/licenses
+ target is run automatically during the build process.
+
+
+ End-to-End Windows build process using WSL(
+
+ Recommended
+
+ )
+
+
+
+ See
+
+ config.sh
+
+ and
+
+ i2pversion
+
+ for instructions on how to tweak
+
+
+ the build process. File an issue if you need help.
+
+
+
+
+ If you’ve already done this once, you can just use:
+
+
+ ./unsigned.sh
+
+
+ in
+
+ git bash
+
+
+ to automatically build an installer. If you
+ are using this method, you may use the
+
+ makensis
and
- i2pversion
+ make
- for instructions on how to tweak
-
-
- the build process. File an issue if you need help.
-
-
-
-
- If you’ve already done this once, you can just use:
-
-
- ./unsigned.sh
-
-
- in
-
- git bash
-
-
- to automatically build an installer. If you
- are using this method, you may use the
-
- makensis
-
- and
-
- make
-
- from
- Ubuntu in WSL.
-
-
- -
-
-
- Set up Windows Subsystem for Linux per Microsoft’s instructions
-
-
-
- -
-
-
- -
-
- Open Git Bash.
-
-
- -
-
- Install prerequisites
-
- wsl sudo apt-get update && sudo apt-get install make nsis nsis-pluginapi dos2unix curl jq
-
-
-
- -
-
- Clone
-
- i2p.i2p
-
- and
-
- i2p.firefox
-
-
- git clone https://github.com/i2p/i2p.i2p
+ from
+ Ubuntu in WSL.
+
+
+ -
+
+
+ Set up Windows Subsystem for Linux per Microsoft’s instructions
+
+
+
+ -
+
+
+ -
+
+ Open Git Bash.
+
+
+ -
+
+ Install prerequisites
+
+ wsl sudo apt-get update && sudo apt-get install make nsis nsis-pluginapi dos2unix curl jq
+
+
+
+ -
+
+ Clone
+
+ i2p.i2p
+
+ and
+
+ i2p.firefox
+
+
+ git clone https://github.com/i2p/i2p.i2p
git clone https://github.com/i2p/i2p.firefox
-
- -
-
- Move to the i2p.i2p directory. Build the .jar files required to build the App Image
- inside i2p.i2p. Return to home.
-
- cd i2p.i2p
+
+ -
+
+ Move to the i2p.i2p directory. Build the .jar files required to build the App Image
+ inside i2p.i2p. Return to home.
+
+ cd i2p.i2p
ant clean pkg
cd ..
-
- -
-
- Move into the i2p.firefox directory. Run the
-
- ./build.sh
-
- script.
-
- cd i2p.firefox
-./build.sh
+
+ -
+
+ Move into the i2p.firefox directory. Run the
+
+ ./buildscripts/build.sh
+
+ script.
+
+ cd i2p.firefox
+./buildscripts/build.sh
-
- -
-
- Compile the NSIS installer using WSL.
-
- wsl make
+
+ -
+
+ Compile the NSIS installer using WSL.
+
+ wsl make
-
-
-
- End-to-End Windows build process using Cygwin(More difficult than WSL for now)
-
-
- I highly recommend you look into the Chocolatey package manager, which makes it much
- easier to configure these tools and keep them up to date.
-
-
-
- Prerequisites:
-
- In addition to the other prerequisites, you will need to to have
-
- make
-
- installed with
-
- cygwin
-
- . If you are using this method, you cannot use the
- automated build scripts without a hack. You will need to create a file called
-
- wsl
-
- in a place that is in the path used by
-
- git-bash.exe
-
- sessions, with the content:
-
- #! /usr/bin/env bash
-$@
-
-
- For our purposes, as long as everything else is set up and you’re using git bash,
- that is enough to make the scripts compatible with
-
- cygwin
-
- . Cygwin builds without
- git bash are not likely to work.
-
-
- -
-
- Run the Cygwin
-
- setup-$arch.exe
-
- for your platform to set up new packages. Select the
-
- make
-
-
- jq
-
-
- dos2unix
-
- and
-
- curl
-
- packages.
-
-
- -
-
- Open a cygwin terminal.
-
-
- -
-
- Clone
-
- i2p.i2p
-
- and
-
- i2p.firefox
-
-
- git clone https://github.com/i2p/i2p.i2p
-git clone https://github.com/i2p/i2p.firefox
-
-
- -
-
- Move to the i2p.i2p directory. Build the .jar files required to build the App Image
- inside i2p.i2p. Return to home.
-
- cd i2p.i2p
-ant clean pkg
-cd ..
-
-
- -
-
- Move into the i2p.firefox directory. Run the
-
- ./build.sh
-
- script.
-
- cd i2p.firefox
-./build.sh
-
-
- -
-
- Run
-
- make
-
- to build the installer.
-
-
-
-
- Doing a Release
-
-
- Once you have the installer
-
- .exe
-
- file produced by NSIS, you’re almost ready to
- do a release. As a final step, someone must sign the
-
- .exe
-
- file using a
- Certificate which Windows will recognize. The current signer of the Windows
- bundle is Zlatinb. Standard Windows signing tools are used.
-
- ./release.sh
-
-
- produces the binary.
-
-
- Building a signed update file
-
-
- Building a signed update file for automatically updating a Windows I2P router
- requires you to either be using linux, or have Go installed in your Cygwin or WSL environment.
- On Linux(Where I sign the su3 files), this works:
-
- make su3
-
-
- to run the signing tool if necessary and then package the installer in a
- signed update file.
-
-
- Docker Support
-
-
-
- MOVED, DEPRECATION NOTICE:
-
- Most of this functionality has been moved
- to
-
- http://git.idk.i2p/idk/i2p.plugins.firefox
-
- which is more stable,
- easier to build and use, and easier to incorporate into other
- projects.
-
-
-
- Unix Support
-
-
-
- MOVED. DEPRECATION NOTICE:
-
- Most of this functionality has been moved
- to
-
- http://git.idk.i2p/idk/i2p.plugins.firefox
-
- which is more stable,
- easier to build and use, and easier to incorporate into other
- projects. It is the better option for nearly every non-Windows case
- right now. You can get binary packages from:
-
-
-
- or look at
-
-
-
- for instructions on how to build your own packages. These packages are
- unofficial! Although I do dogfood most of them and the
-
- .jar
-
- gets thorough
- testing.
-
-
-
- The only remotely interesting Unix functionality that remains in this
-
-
- repository is the construction of a portable. You can use
-
- targz.sh
-
- to
-
-
- generate that.
-
-
-
- Issues
-
-
- To report issues against this browser profile, please file issues
- at
-
- the official Gitlab
-
- or the
-
- Github Mirror
-
- . Issues
- pertaining to the plugins may be reported to their upstream
- maintainers if it’s determined that our configuration is not at
- fault.
-
-
- Credits
-
-
- This profile manager makes use of a set of browser extensions which are largely the work of others.
- It makes use of dependencies that are the work of others. In many ways, it’s merely an elaborate
- configuration tool. A smart one, but a configuration tool nonetheless. Many thanks to the following
- projects, developers, and communities:
-
-
- Firefox and Chrome Extensions
-
-
- -
-
- NoScript - Giorgio Maone and others
-
-
- -
-
- HTTPS Everywhere - Electronic Frontier Foundation
-
-
- -
-
- uBlock Origin - Raymond Gorhill and others
-
-
- -
-
- LocalCDN - nobody and others
-
-
- -
-
- jShelter - Libor Polčák and others
-
-
-
-
- Firefox Configuration Modifiations
-
-
-
- You can find the license files for each of the these projects in the
-
- src/i2p.firefox.*.profile/extensions/*
-
- directory for Firefox, and the
-
- src/i2p.chromium.*.profile/extensions/*.js/*
-
- directories for Chromium within
- the
-
-
- i2p.plugins.firefox
-
-
- project.
-
-
- I2P in Private Browsing is developed on Gitlab and Github by idk and the community:
- -
-
- https://i2pgit.org/idk/I2P-in-Private-Browsing-Mode-Firefox
-
- -
-
- https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox
-
-
-
-
+
+
+
+ End-to-End Windows build process using Cygwin(More difficult than WSL for now)
+
+
+ I highly recommend you look into the Chocolatey package manager, which makes it much
+ easier to configure these tools and keep them up to date.
+
+
- Get the source code:
+ Prerequisites:
-
+ In addition to the other prerequisites, you will need to to have
+
+ make
+
+ installed with
+
+ cygwin
+
+ . For our purposes, as long as everything else is
+ set up and you’re using git bash, that is enough to make the scripts compatible with
+
+ cygwin
+
+ . Cygwin builds without git bash are not likely to work.
+
+
+ -
+
+ Run the Cygwin
+
+ setup-$arch.exe
+
+ for your platform to set up new packages. Select the
+
+ make
+
+
+ jq
+
+
+ dos2unix
+
+ and
+
+ curl
+
+ packages.
+
+
+ -
+
+ Open a cygwin terminal.
+
+
+ -
+
+ Clone
+
+ i2p.i2p
+
+ and
+
+ i2p.firefox
+
+
+ git clone https://github.com/i2p/i2p.i2p
+git clone https://github.com/i2p/i2p.firefox
+
+
+ -
+
+ Move to the i2p.i2p directory. Build the .jar files required to build the App Image
+ inside i2p.i2p. Return to home.
+
+ cd i2p.i2p
+ant clean pkg
+cd ..
+
+
+ -
+
+ Move into the i2p.firefox directory. Run the
+
+ ./buildscripts/unsigned.sh
+
+ script.
+
+ cd i2p.firefox
+./buildscripts/unsigned.sh
+
+
+
+
+ Doing a Release
+
+
+ Once you have the installer
+
+ .exe
+
+ file produced by NSIS, you’re almost ready to
+ do a release. As a final step, someone must sign the
+
+ .exe
+
+ file using a
+ Certificate which Windows will recognize. The current signer of the Windows
+ bundle is Zlatinb. Standard Windows signing tools are used.
+
+ ./release.sh
+
+
+ produces the binary and the su3.
+
+
+ Issues
+
+
+ To report issues against this browser profile, please file issues
+ at
+
+ the official Gitlab
+
+ or the
+
+ Github Mirror
+
+ . Issues
+ pertaining to the plugins may be reported to their upstream
+ maintainers if it’s determined that our configuration is not at
+ fault.
+
+
+ Credits
+
+
+ This profile manager makes use of a set of browser extensions which are largely the work of others.
+ It makes use of dependencies that are the work of others. In many ways, it’s merely an elaborate
+ configuration tool. A smart one, but a configuration tool nonetheless. Many thanks to the following
+ projects, developers, and communities:
+
+
+ Firefox and Chrome Extensions
+
-
-
- Source Repository: (https://github.com/eyedeekay/i2p.firefox)
+
+ NoScript - Giorgio Maone and others
+
+
+ -
+
+ HTTPS Everywhere - Electronic Frontier Foundation
+
+
+ -
+
+ uBlock Origin - Raymond Gorhill and others
+
+
+ -
+
+ LocalCDN - nobody and others
+
+
+ -
+
+ jShelter - Libor Polčák and others
-
-
-
- Show license
-
-
-
- Copyright 2018
+
+ Firefox Configuration Modifiations
+
+
+
+ You can find the license files for each of the these projects in the
+
+ src/i2p.firefox.*.profile/extensions/*
+
+ directory for Firefox, and the
+
+ src/i2p.chromium.*.profile/extensions/*.js/*
+
+ directories for Chromium within
+ the
+
+
+ i2p.plugins.firefox
+
+
+ project.
+
+
+ I2P in Private Browsing is developed on Gitlab and Github by idk and the community:
+ -
+
+ https://i2pgit.org/idk/I2P-in-Private-Browsing-Mode-Firefox
+
+ -
+
+ https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox
+
+
+
+
+
+ Get the source code:
+
+
+
+
+
+
+ Show license
+
+
+
+ Copyright 2018
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
@@ -764,9 +702,10 @@ 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.
-
- Hide license
-
+
+ Hide license
+
+
@@ -775,7 +714,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/style.css b/style.css
index 963d79f..c1b47b1 100644
--- a/style.css
+++ b/style.css
@@ -36,6 +36,7 @@ img {
left: 5%;
max-width: 60%;
display: inline;
+ padding-right: 2%;
}
.inline {
@@ -74,8 +75,6 @@ iframe {
}
.container {
- width: 36vw;
- height: 64vh;
display: inline-block;
margin: 0;
padding: 0;