Compare commits

...

62 Commits

Author SHA1 Message Date
idk
20b5ffdb17 disable signing in releaser script 2023-01-12 18:38:50 +00:00
idk
4a6926fcbf bump version for release 2023-01-12 17:05:02 +00:00
idk
5b12f20406 generate source tarball of embedded I2P router after pulling in all available tags 2023-01-03 20:03:15 +00:00
idk
da29268898 update icon 2023-01-03 19:31:01 +00:00
idk
79f016cb1c switch to git archive for tarball, include ico and png in app-content to make NSIS builds work 2023-01-03 19:26:04 +00:00
idk
e19ce19368 change the icon used in the jpackage builds on Windows 2023-01-03 17:57:27 +00:00
idk
2e4f110c30 use prebuild jbigi 2023-01-02 23:25:37 +00:00
idk
1bb8238e68 add m4 to path when building on Windows 2023-01-02 04:01:17 +00:00
idk
6bfec5d6ef unquote to allow globbing, make nightlies build from master 2023-01-02 03:57:55 +00:00
idk
f7c6251f30 possible jbigi fix 2023-01-02 02:32:51 +00:00
idk
1a1e25a52f remove erroneously checked in files 2023-01-01 18:57:05 +00:00
idk
b8b19786b1 remove erroneously checked in files 2023-01-01 18:56:18 +00:00
idk
8c2c839337 rename release artifacts 2023-01-01 18:54:56 +00:00
idk
f56771ac8a update Java version, update uninstaller shortcut 2022-11-22 23:01:12 -05:00
idk
e0d5d61518 fix outproxy false.i2p line in i2ptunnel.config 2022-11-21 13:51:15 -05:00
idk
c4c40eee8f fixperms in zip.sh 2022-11-06 21:11:24 -05:00
idk
2db71e402d move fixperms to own script 2022-11-06 21:09:40 -05:00
idk
6e9df08473 delay a second before correcting perms 2022-11-06 20:56:54 -05:00
idk
b98b488f70 delay a second before correcting perms 2022-11-06 20:36:47 -05:00
idk
52b34a5d6a move windows portable script 2022-11-06 20:07:44 -05:00
idk
c1b20d4f2b move windows portable script 2022-11-06 20:01:48 -05:00
idk
c656b80674 move windows portable script 2022-11-06 20:01:23 -05:00
idk
4ceddb976d get rid of redundant targz section 2022-11-06 19:37:37 -05:00
idk
8f14378aee move wineprefix and only build portables when I do a Linux daily 2022-11-06 17:44:30 -05:00
idk
c5af86adfd move wineprefix and only build portables when I do a Linux daily 2022-11-06 17:42:59 -05:00
idk
9469293bcf fixups for the windows portable 2022-11-06 16:12:55 -05:00
idk
44ce8335a1 fixups for the windows portable 2022-11-06 16:03:06 -05:00
idk
8a9ce211f3 use powershell zip to update Windows portables 2022-11-06 14:44:35 -05:00
idk
037250ae46 Add zip.sh script to generate Windows portables 2022-11-06 14:39:34 -05:00
idk
f93c4660da Add zip.sh script to generate Windows portables 2022-11-06 14:37:13 -05:00
idk
2f516f0c11 Add zip.sh script to generate Windows portables 2022-11-06 13:38:59 -05:00
idk
f3d871d64b move torbrowser.sh to torbrowser-windows.sh 2022-11-06 13:38:05 -05:00
idk
51a82601f0 Register notStarting shutdown hook 2022-10-31 12:17:30 -04:00
idk
85e30d36d7 update libraries 2022-10-25 22:03:27 -04:00
idk
7e21d86ab4 zip update processing 2022-10-23 16:05:46 -04:00
idk
6fbe64d8e2 monitor execution of update installer for errors 2022-10-23 15:41:59 -04:00
idk
91beec4f75 monitor execution of update installer for errors 2022-10-23 15:35:26 -04:00
idk
5f3a3d46f6 mark GUI component goal complete 2022-10-22 23:43:57 -04:00
idk
23d013765a mark browser.properties goal complete 2022-10-22 22:17:13 -04:00
idk
b3ff2dfdbf add silent TBB downloader script for Windows from Linux 2022-10-18 16:27:12 -04:00
idk
d58aeb6b19 more GOALS 2022-10-09 20:18:40 -04:00
idk
5d2e5dc69b use unzip instead of tar in getprebuilt 2022-10-09 18:14:36 -04:00
idk
8fd6d6f45f fix order of Sun Oct 9 06:08:50 PM EDT 2022 call in getprebuilt.sh 2022-10-09 18:08:51 -04:00
idk
7f0d5eb0b2 make it possible to overide archive builds when building on Linux to produce a Linux jpackage 2022-10-09 16:07:02 -04:00
idk
cd8be4196e Fix a bunch of typos 2022-10-09 16:02:48 -04:00
idk
3548ea0ed6 Add a document for guiding development of features 2022-10-09 01:27:45 -04:00
idk
730b9ed267 add ability to get prebuilt 2022-10-08 23:49:29 -04:00
idk
67e0b87d97 clone i2p.i2p to depth=1 2022-10-08 13:14:04 -04:00
idk
1424913447 shellcheck torbrowser.sh script 2022-10-01 22:30:11 -04:00
idk
c0cb68f972 pack a recent TBB into the linux portable just in case 2022-10-01 22:05:58 -04:00
idk
52c91e1e65 update i2pfirefox version 2022-10-01 22:00:58 -04:00
idk
9e6ea435af Comment out Potent Portables 2022-10-01 21:28:00 -04:00
idk
308055143f update i2p.plugins.firefox version 2022-10-01 21:06:48 -04:00
idk
53f731f945 mark torbrowser.sh script executable 2022-10-01 21:01:00 -04:00
idk
7ec56455cd remove obsolete/redundant Unix scripts 2022-10-01 20:51:03 -04:00
idk
c11f982088 be even more specific about the WinLauncher.java URL fixes 2022-09-20 23:24:28 -04:00
idk
58e1276072 get rid of the "jpackaged" file from the NSIS installer, that's only created after a config migration inside the jpackage now 2022-09-20 12:35:59 -04:00
idk
20240c9e75 get rid of the "jpackaged" file from the NSIS installer, that's only created after a config migration inside the jpackage now 2022-09-20 12:34:52 -04:00
idk
4079d6a8b1 remove some NSIS lines that are now automated by the jpackage. 2022-09-20 11:39:24 -04:00
idk
8b893d1116 skip service correction if config is absent 2022-09-20 01:12:22 -04:00
idk
0d209bb2a8 skip service correction if config is absent 2022-09-20 01:07:56 -04:00
idk
186493b154 skip service correction on linux 2022-09-20 00:54:56 -04:00
53 changed files with 790 additions and 3761 deletions

6
.gitignore vendored
View File

@ -21,4 +21,8 @@ cmd
*.jar
*.zip
*.tar.gz
config_override.sh
config_override.sh
i2pkeys
onionkeys
tlskeys
tmp

99
GOALS.md Normal file
View File

@ -0,0 +1,99 @@
Feature Goals
=============
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.
- **See Also:**
- *Browser Integrations are provided by browser extensions which are contained in their own repositories.*
- Firefox:
- [git.idk.i2p/idk/I2P-in-Private-Browsing-Mode-Firefox](http://git.idk.i2p/idk/I2P-in-Private-Browsing-Mode-Firefox/)
- [i2pgit.org/idk/I2P-in-Private-Browsing-Mode-Firefox](https://i2pgit.org/idk/I2P-in-Private-Browsing-Mode-Firefox/)
- [github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox](https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/)
- Chromium:
- [git.idk.i2p/idk/I2P-Configuration-For-Chromium](http://git.idk.i2p/idk/I2P-Configuration-For-Chromium/)
- [i2pgit.org/idk/I2P-Configuration-For-Chromium](https://i2pgit.org/idk/I2P-Configuration-For-Chromium/)
- [github.com/eyedeekay/I2P-Configuration-For-Chromium](https://github.com/eyedeekay/I2P-Configuration-For-Chromium/)
- *Browser profile management are provided by a freestanding, cross-platform library which is contained in its own repository.*
- [git.idk.i2p/idk/i2p.plugins.firefox](http://git.idk.i2p/idk/i2p.plugins.firefox)
- [i2pgit.org/idk/i2p.plugins.firefox](https://i2pgit.org/idk/i2p.plugins.firefox)
- [github.com/eyedeekay/i2p.plugins.firefox](https://github.com/eyedeekay/i2p.plugins.firefox)
Build Methods
-------------
- `[X]` Cleanly separate jpackage generation phase from NSIS generation phase
- `[X]` Enable archive builds for generating Windows `.exe`'s from Linux hosts
Installation Methods
--------------------
- `[X]` NSIS installer
- `[X]` Portable, directory-based install
- `[ ]` Windows Service Support
Update Methods
--------------
- `[X]` NSIS installer in Default Directory
- `[X]` NSIS installer in Portable Directory
- `[X]` Handle admin and non-admin updates automatically
- `[ ]` Zip-Only portable updater
Launcher
--------
- `[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](http://git.idk.i2p/idk/i2p.plugins.firefox/-/issues/3) [Chromium](http://git.idk.i2p/idk/i2p.plugins.firefox/-/issues/4)
Browser Configuration All
-------------------------
- `[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
Browser Configuration Firefox
-----------------------------
- `[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)
Browser Configuration Chromium
------------------------------
- `[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`
Browser Configuration Strict Mode
---------------------------------
- `[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)
Browser Configuration Usability Mode
------------------------------------
- `[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

View File

@ -7,10 +7,13 @@ preset=`rm .version; make version`
-include .version
PROFILE_VERSION=$(MAJOR).$(MINOR).$(BUILD)
PROFILE_VERSION=$(VERSIONMAJOR).$(VERSIONMINOR).$(VERSIONBUILD)
all: version prep install.exe
fmt:
find . -name '*.java' -exec clang-format -i {} \;
tag:
git tag $(PROFILE_VERSION)
@ -22,9 +25,9 @@ version:
rm -f version.txt
make version.txt i2pbrowser-jpackage.nsi
version.txt:
echo "$(PROFILE_VERSION)" > src/profile/version.txt
echo "$(PROFILE_VERSION)" > src/app-profile/version.txt
version.txt: build
echo "$(PROFILE_VERSION)" > build/version.txt
echo "$(PROFILE_VERSION)" > build/version.txt
i2pbrowser-jpackage.nsi:
echo "!define I2P_VERSION $(PROFILE_VERSION)" > src/nsis/i2pbrowser-jpackage.nsi
@ -38,17 +41,17 @@ help: version
@echo "$(MAJOR).$(MINOR).$(BUILD)"
@echo "$(preset)"
prep: #launchers build/licenses profile.tgz app-profile.tgz profile build/I2P build/I2P/config #
prep:
make build/licenses
echo "licenses" >make.log
echo "licenses" >>make.log
make build/I2P
echo "buildi2p" >make.log
echo "buildi2p" >>make.log
make build/I2P/config
echo "buildi2pconfig" >make.log
echo "buildi2pconfig" >>make.log
cp src/nsis/*.nsi build
echo "nsi1" >make.log
echo "nsi1" >>make.log
cp src/nsis/*.nsh build
echo "nsi2" >make.log
echo "nsi2" >>make.log
cp src/icons/*.ico build
install.exe: #build/licenses
@ -56,7 +59,7 @@ install.exe: #build/licenses
export RES_DIR="../i2p.i2p.jpackage-build/installer/resources"
export PKG_DIR="../i2p.i2p.jpackage-build/pkg-temp"
export I2P_JBIGI="../i2p.i2p.jpackage-build/installer/lib/jbigi"
#export I2P_JBIGI="../i2p.i2p.jpackage-build/installer/lib/jbigi"
distclean: clean
rm -rf I2P
@ -67,12 +70,11 @@ I2P:
build/I2P: I2P build
rm -rf build/I2P
cp -rv I2P build/I2P ; true
cp "$(I2P_JBIGI)"/*windows*.dll build/I2P/runtime/lib; true
# cp "$(I2P_JBIGI)"/*windows*.dll build/I2P/runtime/lib; true
src/I2P/config:
mkdir -p src/I2P/config
rm -rf src/I2P/config/geoip src/I2P/config/webapps src/I2P/config/certificates
echo true | tee src/I2P/config/jpackaged
cp -v $(RES_DIR)/clients.config src/I2P/config/
cp -v $(RES_DIR)/wrapper.config src/I2P/config/
#grep -v 'router.updateURL' $(RES_DIR)/router.config > src/I2P/config/router.config
@ -128,8 +130,11 @@ include makefiles/debian.mk
I2P_DATE=`date +%Y-%m-%d`
MAGNET=`bttools torrent printinfo i2pwinupdate.su3.torrent | grep 'MagNet' | sed 's|MagNet: ||g' | sed 's|%3A|:|g'| sed 's|%2F|/|g'`
MAGNET_TESTING=`bttools torrent printinfo i2pwinupdate-testing.su3.torrent | grep 'MagNet' | sed 's|MagNet: ||g' | sed 's|%3A|:|g'| sed 's|%2F|/|g'`
MAGNET=`bttools torrent dumpinfo i2pwinupdate.su3.torrent | grep 'Magnet' | sed 's|Magnet: ||g' | sed 's|%3A|:|g'| sed 's|%2F|/|g'`
MAGNET_TESTING=`bttools torrent dumpinfo i2pwinupdate-testing.su3.torrent | grep 'MagNet' | sed 's|MagNet: ||g' | sed 's|%3A|:|g'| sed 's|%2F|/|g'`
magnet:
echo "$(MAGNET)"
BLANK=`awk '! NF { print NR; exit }' changelog.txt`

123
PRINCIPLES.md Normal file
View File

@ -0,0 +1,123 @@
Guidance
========
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]`.
- **Sections:**
1. Guidance for Browser Profile Configuration
Guidance for Browser Profile Configuration
------------------------------------------
- **See also:**
- [git.idk.i2p/idk/i2p.plugins.firefox](http://git.idk.i2p/idk/i2p.plugins.firefox)
- [i2pgit.org/idk/i2p.plugins.firefox](https://i2pgit.org/idk/i2p.plugins.firefox)
- [github.com/eyedeekay/i2p.plugins.firefox](https://github.com/eyedeekay/i2p.plugins.firefox)
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.
- **That means:**
1. It considers the browser integral to the interactive use of the I2P network by a large fraction of users.
2. It considers effective browser configuration **impossible for a single user to achieve** because effective browser configuration must have the characteristic of being reflected en-masse(anti-fingerprinting measures are only remotely effective when widely used).
3. The browser profile it injects inherits the runtime security characteristics of the **host browser**.
4. The browser profile it injects obtains runtime privacy characteristics of the **easy-install bundle**
5. The number of coarse browser fingerprint sets is reduced from indeterminately large to `[supported browsers]*[variant configurations]`
6. It attempts to balance flexibility with privacy, and accommodate people's preferences where possible.
7. It considers browser vendors better at providing browser updates than the I2P Project
Browser Configurations and Coarse Fingerprints
----------------------------------------------
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.
### Strict Mode
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.
### Usability Mode
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.
### Firefox-Based Browsers
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 Browsers
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.
### All other browsers
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.

View File

@ -234,7 +234,8 @@ 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.**
**generate that. Once generated, `cd I2P && ./lib/torbrowser.sh` to complete**
**setup, and `./bin/I2P` to run it.**
Issues
------

View File

@ -1,4 +0,0 @@
#! /usr/bin/env bash
curl -s "https://addons.mozilla.org/api/v5/addons/addon/$1/versions/?page_size=1" | jq '.results | .[0] | .file | .url' | tr -d '"'

View File

@ -16,17 +16,42 @@ if [ -f config_overide.sh ]; then
. "$SCRIPT_DIR/config_override.sh"
fi
if [ -z $machine ]; then
unameOut="$(uname -s)"
case "${unameOut}" in
Linux*) machine=Linux;;
Darwin*) machine=Mac;;
*) machine="UNKNOWN:${unameOut}"
esac
fi
ICON="src/icons/ui2pbrowser_icon.ico"
if [ "$machine" = "Mac" ]; then
rm -rf I2P
./getprebuilt.sh
exit 0
elif [ "$machine" = "Linux" ]; then
rm -rf I2P
./getprebuilt.sh
exit 0
elif [ "$machine" = "unix" ]; then
ICON=src/icons/windowsUIToopie2.png
fi
. "$SCRIPT_DIR/launcher.sh"
if [ -z $I2P_VERSION ]; then
I2P_VERSION=$("$JAVA_HOME"/bin/java -cp build/router.jar net.i2p.router.RouterVersion | sed "s/.*: //" | head -n 1 | sed 's|-|.|g')
fi
echo "preparing to invoke jpackage for I2P version $I2P_VERSION"
rm -rf I2P
make src/I2P/config
if [ ! -d "I2P" ]; then
"$JAVA_HOME"/bin/jpackage --type app-image --name I2P --app-version "$I2P_VERSION" \
--verbose \
--java-options "-Xmx512m" \
@ -38,10 +63,13 @@ make src/I2P/config
$JPACKAGE_OPTS \
--resource-dir build \
--app-content src/I2P/config \
--app-content src/unix/torbrowser.sh \
--app-content src/win/torbrowser-windows.sh \
--app-content src/icons/windowsUIToopie2.png \
--app-content src/icons/ui2pbrowser_icon.ico \
--icon src/icons/windowsUIToopie2.png \
--icon "${ICON}" \
--input build --main-jar launcher.jar --main-class net.i2p.router.WinLauncher
fi
cp "$I2P_PKG/licenses/"* license/
cp "$HERE/../i2p.i2p.jpackage-build/LICENSE.txt" license/I2P.txt

View File

@ -10,17 +10,21 @@ uname=$(uname)
# to use it for Oracle OpenJDK18
if [[ -n "$IS_WSL" || -n "$WSL_DISTRO_NAME" ]]; then
PATH="/c/Program Files/Java/jdk-18.0.2/bin/:$PATH:/c/Program Files/Java/jdk-18.0.2/bin/"
export PATH="/c/Program Files/Java/jdk-18.0.2/bin/:$PATH:/c/Program Files/Java/jdk-18.0.2/bin/"
JAVA_HOME="/c/Program Files/Java/jdk-18.0.2"
export JAVA_HOME="/c/Program Files/Java/jdk-18.0.2"
PATH="/c/Program Files/Java/jdk-19/bin/:$PATH:/c/Program Files/Java/jdk-19/bin/"
export PATH="/c/Program Files/Java/jdk-19/bin/:$PATH:/c/Program Files/Java/jdk-19/bin/"
JAVA_HOME="/c/Program Files/Java/jdk-19"
export JAVA_HOME="/c/Program Files/Java/jdk-19"
HOST=win32
export HOST=win32
fi
if [ "${uname}" != "Linux" ]; then
PATH="/c/Program Files/Java/jdk-18.0.2/bin/:$PATH:/c/Program Files/Java/jdk-18.0.2/bin/"
export PATH="/c/Program Files/Java/jdk-18.0.2/bin/:$PATH:/c/Program Files/Java/jdk-18.0.2/bin/"
JAVA_HOME="/c/Program Files/Java/jdk-18.0.2"
export JAVA_HOME="/c/Program Files/Java/jdk-18.0.2"
PATH="/c/Program Files/Java/jdk-19/bin/:$PATH:/c/Program Files/Java/jdk-19/bin/"
export PATH="/c/Program Files/Java/jdk-19/bin/:$PATH:/c/Program Files/Java/jdk-19/bin/"
JAVA_HOME="/c/Program Files/Java/jdk-19"
export JAVA_HOME="/c/Program Files/Java/jdk-19"
HOST=win32
export HOST=win32
fi
@ -74,9 +78,13 @@ fi
if [[ -n "$IS_WSL" || -n "$WSL_DISTRO_NAME" ]]; then
PATH="$PATH:/c/Program Files (x86)/Windows Kits/10/App Certification Kit/"
export PATH="$PATH:/c/Program Files (x86)/Windows Kits/10/App Certification Kit/"
PATH="$PATH:C:\Users\user\Downloads\m4-1.4.14-1-bin\bin"
export PATH="$PATH:C:\Users\user\Downloads\m4-1.4.14-1-bin\bin"
fi
if [ "${uname}" != "Linux" ]; then
PATH="$PATH:/c/Program Files (x86)/Windows Kits/10/App Certification Kit/"
export PATH="$PATH:/c/Program Files (x86)/Windows Kits/10/App Certification Kit/"
PATH="$PATH:C:\Users\user\Downloads\m4-1.4.14-1-bin\bin"
export PATH="$PATH:C:\Users\user\Downloads\m4-1.4.14-1-bin\bin"
fi

View File

@ -50,3 +50,4 @@ sleep 2s
ZIPCHECKSUM=$(sha256sum "I2P.tar.gz")
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P.tar.gz" -l "$ZIPCHECKSUM" -t "$TODAYSDATE" -n "I2P.tar.gz"
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P.tar.gz" -l "$ZIPCHECKSUM" -t "$TODAYSDATE" -n "I2P.tar.gz"

52
daily-portable-windows.sh Executable file
View File

@ -0,0 +1,52 @@
#! /usr/bin/env bash
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)
cd "$SCRIPT_DIR" || exit 1
. "$SCRIPT_DIR/i2pversion"
if [ -f i2pversion_override ]; then
. "$SCRIPT_DIR/i2pversion_override"
fi
. "$SCRIPT_DIR/config.sh"
if [ -f config_overide.sh ]; then
. "$SCRIPT_DIR/config_override.sh"
fi
### How to set up this script:
#
# This script will not work unless you give it a Github API key.
# You need to create a file in your $HOME directory, which on
# Windows will by /c/Users/yourusername, called github-release-config.sh,
# containing this key as the variable GITHUB_TOKEN.
# github-release-config.sh must also contain:
# GITHUB_USERNAME=your github username
git clean -fd
git checkout .
. "$HOME/github-release-config.sh"
if [ -f ./i2pversion_override ]; then
. ./i2pversion_override
fi
TODAYSDATE=$(date +%Y%m%d)
if [ -z "$DESCRIPTION" ]; then
DESCRIPTION="Daily unsigned build of i2p.firefox for $TODAYSDATE
===================================================
These builds are automatically built on a daily basis and may have serious bugs.
They are intended for testing purposes only, use them at your own risk.
"
fi
echo github-release release -p -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "$TODAYSDATE" -d "$DESCRIPTION" -t "$TODAYSDATE"
github-release release -p -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "$TODAYSDATE" -d "$DESCRIPTION" -t "$TODAYSDATE"
./zip.sh
WINZIPCHECKSUM=$(sha256sum "I2P-windows-portable.zip")
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P-windows-portable.zip" -l "$WINZIPCHECKSUM" -t "$TODAYSDATE" -n "I2P-windows-portable.zip"
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P-windows-portable.zip" -l "$WINZIPCHECKSUM" -t "$TODAYSDATE" -n "I2P-windows-portable.zip"

View File

@ -51,7 +51,6 @@ powershell Compress-Archive -force I2P I2P.zip
ZIPCHECKSUM=$(sha256sum "I2P.zip")
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P.zip" -l "$ZIPCHECKSUM" -t "$TODAYSDATE" -n "I2P.zip"
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P.zip" -l "$ZIPCHECKSUM" -t "$TODAYSDATE" -n "I2P.zip"
TARCHECKSUM=$(sha256sum "../i2p.i2p.jpackage-build.tar.gz")
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "../i2p.i2p.jpackage-build.tar.gz" -l "Upstream I2P Router source code $TARCHECKSUM" -t "$TODAYSDATE" -n "i2p.i2p.jpackage-build.tar.gz"
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "../i2p.i2p.jpackage-build.tar.gz" -l "Upstream I2P Router source code $TARCHECKSUM" -t "$TODAYSDATE" -n "i2p.i2p.jpackage-build.tar.gz"

View File

@ -1 +0,0 @@
A browser profile and accompanying script for launching it. Used to combine I2P with Firefox in a reasonably safe way.

6
fixperms.sh Executable file
View File

@ -0,0 +1,6 @@
#! /usr/bin/env sh
find I2P -type d -exec chmod -v 755 {} \;
find I2P -type f -exec chmod -v +rw {} \;
find I2P -type d -exec chmod -v 755 {} \;
find I2P -type f -exec chmod -v +rw {} \;

31
getprebuilt.sh Executable file
View File

@ -0,0 +1,31 @@
#! /usr/bin/env bash
set -e
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)
cd "$SCRIPT_DIR" || exit 1
. "$SCRIPT_DIR/i2pversion"
if [ -f i2pversion_override ]; then
. "$SCRIPT_DIR/i2pversion_override"
fi
. "$SCRIPT_DIR/config.sh"
if [ -f config_overide.sh ]; then
. "$SCRIPT_DIR/config_override.sh"
fi
. "$HOME/github-release-config.sh"
if [ -z $TODAYSDATE ]; then
TODAYSDATE=$(date -d '-1 day' '+%Y%m%d')
fi
if [ ! -f I2P.zip ]; then
echo github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "I2P.zip" -t "$TODAYSDATE"
github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "I2P.zip" -t "$TODAYSDATE"
fi
unzip I2P.zip
sleep 3
./fixperms.sh

View File

@ -21,7 +21,7 @@ tunnel.0.type=httpclient
tunnel.0.sharedClient=false
tunnel.0.interface=127.0.0.1
tunnel.0.listenPort=4444
tunnel.0.proxyList=false.i2p
tunnel.0.proxyList=exit.stormycloud.i2p
tunnel.0.i2cpHost=127.0.0.1
tunnel.0.i2cpPort=7654
tunnel.0.option.inbound.nickname=HTTP Proxy
@ -31,7 +31,7 @@ tunnel.0.option.i2cp.reduceIdleTime=900000
tunnel.0.option.i2cp.reduceOnIdle=true
tunnel.0.option.i2cp.reduceQuantity=1
tunnel.0.option.i2p.streaming.connectDelay=1000
tunnel.0.option.i2ptunnel.httpclient.SSLOutproxies=false.i2p
tunnel.0.option.i2ptunnel.httpclient.SSLOutproxies=exit.stormycloud.i2p
tunnel.0.option.inbound.length=3
tunnel.0.option.inbound.lengthVariance=0
tunnel.0.option.outbound.length=3

View File

@ -1,16 +1,15 @@
#! /usr/bin/env sh
JNA_VERSION=5.11.0
export JNA_VERSION=5.11.0
I2PFIREFOX_VERSION=0.0.36
export I2PFIREFOX_VERSION=0.0.36
JNA_VERSION=5.12.1
export JNA_VERSION=5.12.1
I2PFIREFOX_VERSION=1.0.7
export I2PFIREFOX_VERSION=1.0.7
# Comment this out to build from an alternate branch or
# the tip of the master branch.
VERSIONMAJOR=1
VERSIONMINOR=9
VERSIONBUILD=7
VERSIONMAJOR=2
VERSIONMINOR=1
VERSIONBUILD=0
I2P_VERSION="$VERSIONMAJOR.$VERSIONMINOR.$VERSIONBUILD"
export I2P_VERSION="$VERSIONMAJOR.$VERSIONMINOR.$VERSIONBUILD"
VERSION=i2p-jpackage-1.9.4
export VERSION=i2p-jpackage-1.9.4
VERSION=i2p-2.1.0
export VERSION=i2p-2.1.0

View File

@ -46,7 +46,7 @@ public class CopyConfigDir extends WindowsServiceUtil {
if (copyDirectory(file, new File(newPath)))
return false;
if (file.isFile())
if (!copyFile(file, new File(newPath), true))
if (0 == copyFile(file, new File(newPath), true))
return false;
}
return true;
@ -61,37 +61,52 @@ public class CopyConfigDir extends WindowsServiceUtil {
if (file.isDirectory())
if (!copyConfigDirectory(file, new File(newPath)))
return false;
if (file.isFile())
if (!copyFileNeverOverwrite(
file,
new File(newPath))) // new File(workDir, file.toString())))
if (file.isFile()) {
int cnr = copyFileNeverOverwrite(file, new File(newPath));
if (0 == cnr)
return false;
if (1 == cnr) {
logger.info(
"using jpackaged configs in a jpackaged install, creating jpackaged file");
File jpackagedConfigsInUse = new File(appImageHome(), "jpackaged");
if (!jpackagedConfigsInUse.exists()) {
try {
jpackagedConfigsInUse.createNewFile();
} catch (IOException e) {
logger.warning(
"Error creating jpackaged file, delete config files manually when uninstalling");
}
}
}
if (-1 == cnr) {
logger.info(
"not overwriting existing config file, not creating jpackaged file");
}
}
}
return true;
}
public static boolean copyFileNeverOverwrite(String basePath,
String workPath) {
public static int copyFileNeverOverwrite(String basePath, String workPath) {
File baseFile = new File(basePath);
File workFile = new File(workPath);
return copyFileNeverOverwrite(baseFile, workFile);
}
public static boolean copyFileNeverOverwrite(File basePath, File workPath) {
public static int copyFileNeverOverwrite(File basePath, File workPath) {
return copyFile(basePath, workPath, false);
}
public static boolean copyFile(File basePath, File workPath,
boolean overWrite) {
public static int copyFile(File basePath, File workPath, boolean overWrite) {
if (!basePath.exists()) {
logger.info(basePath.getAbsolutePath() + " doesn't exist, not copying");
return false;
return 0;
}
if (!overWrite && workPath.exists()) {
logger.info(workPath.getAbsolutePath() +
" already exists, not overwriting");
return true;
return -1;
}
File workDir = workPath.getParentFile();
@ -111,12 +126,12 @@ public class CopyConfigDir extends WindowsServiceUtil {
}
in.close();
out.close();
return true;
return 1;
} catch (Throwable e) {
logger.warning(e.toString());
logger.warning("failed to copy " + basePath.getAbsolutePath() + " to " +
workPath.getAbsolutePath());
return false;
return 0;
}
}

View File

@ -36,7 +36,7 @@ public class WinLauncher extends CopyConfigDir {
public static void main(String[] args) {
setupLauncher();
initLogger();
boolean privateBrowsing = false;
int privateBrowsing = 0;
boolean usabilityMode = false;
boolean chromiumFirst = false;
int proxyTimeoutTime = 200;
@ -46,7 +46,7 @@ public class WinLauncher extends CopyConfigDir {
if (args.length > 0) {
for (String arg : args) {
if (arg.equals("-private")) {
privateBrowsing = true;
privateBrowsing = 1;
logger.info(
"Private browsing is true, profile will be discarded at end of session.");
} else if (arg.equals("-chromium")) {
@ -88,7 +88,7 @@ public class WinLauncher extends CopyConfigDir {
File programs = programFile();
File home = homeDir();
System.setProperty("i2p.dir.base", programs.getAbsolutePath());
System.setProperty("i2p.dir.base", new File(programs.getAbsolutePath(), "config").getAbsolutePath());
System.setProperty("i2p.dir.config", home.getAbsolutePath());
System.setProperty("router.pid",
String.valueOf(ProcessHandle.current().pid()));
@ -153,15 +153,27 @@ public class WinLauncher extends CopyConfigDir {
}
private static void fixServiceConfig() {
if (osName() != "windows")
return;
// If the user installed the Easy bundle before installing the
// regulalr bundle, then they have a config file which contains the
// IzPack installer, then they have a config file which contains the
// wrong update URL. Check for it, and change it back if necessary.
// closes #23
i2pRouter = new Router(routerConfig(), System.getProperties());
String routerconf = routerConfig();
if (routerconf != null) {
File routerconffile = new File(routerconf);
if (!routerconffile.exists()) {
return;
}
} else {
return;
}
if (isInstalled("i2p") || checkProgramFilesInstall()) {
i2pRouter = new Router(routerconf, System.getProperties());
String newsURL = i2pRouter.getConfigSetting("router.newsURL");
if (newsURL != null) {
if (newsURL.contains("win/beta")) {
if (newsURL.contains(
"http://dn3tvalnjz432qkqsvpfdqrwpqkw3ye4n4i2uyfr4jexvo3sp5ka.b32.i2p/news/win/beta/news.su3")) {
logger.info(
"checked router.newsURL config, containes win/beta in a service install, invalid update type");
if (i2pRouter.saveConfig("router.newsURL", ServiceUpdaterString())) {
@ -172,7 +184,8 @@ public class WinLauncher extends CopyConfigDir {
}
String backupNewsURL = i2pRouter.getConfigSetting("router.backupNewsURL");
if (backupNewsURL != null) {
if (backupNewsURL.contains("win/beta")) {
if (backupNewsURL.contains(
"http://tc73n4kivdroccekirco7rhgxdg5f3cjvbaapabupeyzrqwv5guq.b32.i2p/win/beta/news.su3")) {
logger.info(
"checked router.backupNewsURL config, containes win/beta in a service install, invalid update type");
if (i2pRouter.saveConfig("router.backupNewsURL",
@ -184,9 +197,10 @@ public class WinLauncher extends CopyConfigDir {
}
String updateURL = i2pRouter.getConfigSetting("router.updateURL");
if (updateURL != null) {
if (updateURL.contains("i2pwinupdate.su3")) {
if (updateURL.contains(
"http://ekm3fu6fr5pxudhwjmdiea5dovc3jdi66hjgop4c7z7dfaw7spca.b32.i2p/i2pwinupdate.su3")) {
logger.info(
"checked router.updateURL config, containes win/beta in a service install, invalid update type");
"checked router.updateURL config, containes easy-intall update in a service install, invalid update type");
if (i2pRouter.saveConfig("router.updateURL",
ServiceStaticUpdaterString())) {
logger.info("updated routerconsole.browser config " +
@ -230,7 +244,7 @@ public class WinLauncher extends CopyConfigDir {
return home;
}
private static boolean launchBrowser(boolean privateBrowsing,
private static boolean launchBrowser(int privateBrowsing,
boolean usabilityMode,
boolean chromiumFirst,
int proxyTimeoutTime,
@ -299,6 +313,12 @@ public class WinLauncher extends CopyConfigDir {
logger.info(e.toString());
}
}
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
setNotStarting();
}
});
}
private static boolean checkStarting() {

View File

@ -62,13 +62,22 @@ class WinUpdateProcess implements Runnable {
env.put("RESTART_I2P", "true");
try {
pb.directory(workingDir)
.redirectErrorStream(true)
.redirectOutput(logFile)
.start();
Process p = pb.directory(workingDir)
.redirectErrorStream(true)
.redirectOutput(logFile)
.start();
exitCode = p.waitFor();
if (exitCode != 0)
_log.error("Update failed with exit code " + exitCode + " see " +
logFile.getAbsolutePath() + " for more details");
} catch (IOException ex) {
_log.error(
"Unable to run update-program in background. Update will fail.");
"Unable to run update program in background. Update will fail.",
ex);
} catch (InterruptedException ex) {
_log.error(
"Unable to run update program in background. Update will fail.",
ex);
}
} else {
// If we cant write to the log file and we're on Windows, use the elevator

View File

@ -39,14 +39,27 @@ public class WindowsUpdatePostProcessor implements UpdatePostProcessor {
String version, File file)
throws IOException {
_log.info("Got an update to post-process");
if (SystemVersion.isWindows()) {
if (type != UpdateType.ROUTER_SIGNED_SU3 &&
type != UpdateType.ROUTER_DEV_SU3) {
_log.warn("Unsupported update type " + type);
return;
}
if (fileType != SU3File.TYPE_ZIP) {
this.positionedFile = moveUpdateInstaller(file);
this.version = version;
if (type != UpdateType.ROUTER_SIGNED_SU3 &&
type != UpdateType.ROUTER_DEV_SU3) {
_log.warn("Unsupported update type " + type);
if (!hook.compareAndSet(false, true)) {
_log.info("shutdown hook was already set");
return;
}
_log.info("adding shutdown hook");
ctx.addFinalShutdownTask(
new ZipUpdateProcess(ctx, this::getVersion, this::getFile));
}
if (SystemVersion.isWindows()) {
if (fileType != SU3File.TYPE_EXE) {
_log.warn("Unsupported file type " + fileType);
return;

View File

@ -0,0 +1,112 @@
package net.i2p.router;
import java.io.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Map;
import java.util.function.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import net.i2p.I2PAppContext;
import net.i2p.router.*;
import net.i2p.util.Log;
public class ZipUpdateProcess implements Runnable {
private final RouterContext ctx;
private final Supplier<String> versionSupplier;
private final Supplier<File> fileSupplier;
private final Log _log;
ZipUpdateProcess(RouterContext ctx, Supplier<String> versionSupplier,
Supplier<File> fileSupplier) {
this.ctx = ctx;
this.versionSupplier = versionSupplier;
this.fileSupplier = fileSupplier;
this._log = ctx.logManager().getLog(ZipUpdateProcess.class);
}
private File workDir() throws IOException {
if (ctx != null) {
File workDir =
new File(ctx.getConfigDir().getAbsolutePath(), "i2p_update_zip");
if (workDir.exists()) {
if (workDir.isFile())
throw new IOException(workDir +
" exists but is a file, get it out of the way");
return workDir;
} else {
workDir.mkdirs();
}
return workDir;
}
return null;
}
private void unzipUpdateInstaller() throws IOException {
String version = versionSupplier.get();
File file = fileSupplier.get();
if (file == null)
return;
File workingDir = workDir();
File zipFile = new File(workingDir, "i2pupdate_portable.zip");
File destDir = ctx.getConfigDir();
String errors = unzip(zipFile.getAbsolutePath(), destDir.getAbsolutePath());
_log.error(errors);
}
@Override
public void run() {
try {
unzipUpdateInstaller();
} catch (IOException ioe) {
_log.error("Error running updater, update may fail." + ioe);
}
}
// copied wholesale from this example:
// https://www.digitalocean.com/community/tutorials/java-unzip-file-example
// It doesn't check for zip-slips, but that's fine because if somebody's able
// to deliver a malicious update then they can just run code anyway so there's
// no point.
private static String unzip(String zipFilePath, String destDir) {
File dir = new File(destDir);
// create output directory if it doesn't exist
if (!dir.exists())
dir.mkdirs();
FileInputStream fis;
// buffer for read and write data to file
byte[] buffer = new byte[1024];
try {
fis = new FileInputStream(zipFilePath);
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry ze = zis.getNextEntry();
while (ze != null) {
String fileName = ze.getName();
File newFile = new File(destDir + File.separator + fileName);
System.out.println("Unzipping to " + newFile.getAbsolutePath());
// create directories for sub directories in zip
new File(newFile.getParent()).mkdirs();
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
// close this ZipEntry
zis.closeEntry();
ze = zis.getNextEntry();
}
// close last ZipEntry
zis.closeEntry();
zis.close();
fis.close();
} catch (IOException e) {
return e.toString();
}
return null;
}
}

View File

@ -40,24 +40,28 @@ sleep 5s
HERE="$PWD"
if [ ! -d "$HERE/../i2p.i2p.jpackage-build/" ]; then
git clone -b "$VERSION" https://i2pgit.org/i2p-hackers/i2p.i2p "$HERE/../i2p.i2p.jpackage-build/"
tar --exclude="$HERE/../i2p.i2p.jpackage-build/.git" -cvzf i2p.i2p.jpackage-build.tar.gz "$HERE/../i2p.i2p.jpackage-build/"
git clone --depth=1 -b "$VERSION" https://i2pgit.org/i2p-hackers/i2p.i2p "$HERE/../i2p.i2p.jpackage-build/"
fi
cd "$HERE/../i2p.i2p.jpackage-build/"
git pull --tags
git archive --format=tar.gz --output="$HERE/../i2p.firefox/i2p.i2p.jpackage-build.tar.gz" "$VERSION"
for i in $COUNT; do
echo -n "$i...."; sleep 1s
done
ant distclean pkg || true
ant jbigi
cd "$HERE"
export I2P_PKG="$HERE/../i2p.i2p.jpackage-build/pkg-temp"
export RES_DIR="$HERE/../i2p.i2p.jpackage-build/installer/resources"
export I2P_JARS="$I2P_PKG/lib"
export I2P_JBIGI="$HERE/../i2p.i2p.jpackage-build/installer/lib/jbigi"
export I2P_JBIGI_JAR="$HERE/../i2p.i2p.jpackage-build/build/jbigi.jar"
echo "compiling custom launcher"
mkdir -p build
cp "$I2P_JARS"/*.jar build
cp "$I2P_JBIGI_JAR" build
if [ ! -f "$HERE/build/jna.jar" ]; then
wget -O "$HERE/build/jna.jar" "https://repo1.maven.org/maven2/net/java/dev/jna/jna/$JNA_VERSION/jna-$JNA_VERSION.jar"
fi
@ -70,15 +74,21 @@ if [ ! -f "$HERE/build/i2pfirefox.jar" ]; then
wget -O "$HERE/build/i2pfirefox.jar" "https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/$I2PFIREFOX_VERSION/i2pfirefox.jar"
fi
for dll in "$I2P_JBIGI/"*windows*.dll; do
jar uf "$HERE/build/jbigi.jar" "$dll"
done
cd java
"$JAVA_HOME"/bin/javac -d ../build -classpath "$HERE/build/i2pfirefox.jar:$HERE/build/jna.jar":"$HERE/build/jna-platform.jar":"$HERE/build/i2p.jar":"$HERE/build/router.jar":"$HERE/build/routerconsole.jar" \
"$JAVA_HOME"/bin/javac -d ../build -classpath "$HERE/build/i2pfirefox.jar:$HERE/build/jna.jar":"$HERE/build/jna-platform.jar":"$HERE/build/i2p.jar":"$HERE/build/router.jar":"$HERE/build/routerconsole.jar":"$HERE/build/jbigi.jar" \
net/i2p/router/CopyConfigDir.java \
net/i2p/router/Elevator.java \
net/i2p/router/Shell32X.java \
net/i2p/router/WindowsServiceUtil.java \
net/i2p/router/WinLauncher.java \
net/i2p/router/WindowsUpdatePostProcessor.java \
net/i2p/router/WinUpdateProcess.java \
net/i2p/router/WindowsServiceUtil.java
net/i2p/router/WindowsServiceUtil.java \
net/i2p/router/ZipUpdateProcess.java
cd ..

View File

@ -1,39 +0,0 @@
install:
install -D -m644 src/unix/i2pbrowserrc /etc/i2pbrowser/i2pbrowserrc
install -D -m644 src/unix/i2pbrowserdebianrc /etc/i2pbrowser/i2pbrowserdebianrc
install -D -m755 build/profile/i2pbrowser.sh /usr/local/bin/i2pbrowser
install -D -m755 build/app-profile/i2pconfig.sh /usr/local/bin/i2pconfig
install -D -m755 src/unix/i2p-config-service-setup.sh /usr/local/bin/i2p-config-service-setup
cp -vr build/profile /var/lib/i2pbrowser/profile
cp -vr build/app-profile /var/lib/i2pbrowser/app-profile
cp -vr src/icons /var/lib/i2pbrowser/icons
cp src/unix/desktop/i2pbrowser.desktop /usr/share/applications
cp src/unix/desktop/i2pconfig.desktop /usr/share/applications
uninstall:
rm -rfv /etc/i2pbrowser \
/var/lib/i2pbrowser \
/etc/i2pbrowser/i2pbrowserrc \
/usr/local/bin/i2pbrowser \
/usr/local/bin/i2pconfig \
/usr/local/bin/i2p-config-service-setup \
/usr/share/applications/i2pbrowser.desktop \
/usr/share/applications/i2pconfig.desktop
checkinstall: .version
checkinstall \
--default \
--install=no \
--fstrans=yes \
--pkgname=i2p-firefox \
--pkgversion=$(PROFILE_VERSION) \
--pkggroup=net \
--pkgrelease=1 \
--pkgsource="https://i2pgit.org/i2p-hackers/i2p.firefox" \
--maintainer="$(SIGNER)" \
--requires="firefox,wget" \
--suggests="i2p,i2p-router,syndie,tor,tsocks" \
--nodoc \
--deldoc=yes \
--deldesc=yes \
--backup=no

View File

@ -7,11 +7,11 @@ $(GOPATH)/src/i2pgit.org/idk/su3-tools/su3-tools:
go mod vendor && go build
prepupdate:
cp -v "I2P-Profile-Installer-$(PROFILE_VERSION)-signed.su3" i2pwinupdate.su3
cp -v "I2P-Easy-Install-Bundle-$(PROFILE_VERSION)-signed.su3" i2pwinupdate.su3
su3: $(GOPATH)/src/i2pgit.org/idk/su3-tools/su3-tools
$(GOPATH)/src/i2pgit.org/idk/su3-tools/su3-tools -name "I2P-Profile-Installer-$(PROFILE_VERSION)-signed" -signer "$(SIGNER)" -version "$(I2P_VERSION)"
java -cp "$(HOME)/i2p/lib/*" net.i2p.crypto.SU3File sign -c ROUTER -f EXE I2P-Profile-Installer-$(PROFILE_VERSION)-signed.exe I2P-Profile-Installer-$(PROFILE_VERSION)-signed.su3 "$(HOME)/.i2p-plugin-keys/news-su3-keystore.ks" $(PROFILE_VERSION) $(SIGNER)
$(GOPATH)/src/i2pgit.org/idk/su3-tools/su3-tools -name "I2P-Easy-Install-Bundle-$(PROFILE_VERSION)-signed" -signer "$(SIGNER)" -version "$(PROFILE_VERSION)"
java -cp "$(HOME)/i2p/lib/*" net.i2p.crypto.SU3File sign -c ROUTER -f EXE I2P-Easy-Install-Bundle-$(PROFILE_VERSION)-signed.exe I2P-Easy-Install-Bundle-$(PROFILE_VERSION)-signed.su3 "$(HOME)/.i2p-plugin-keys/news-su3-keystore.ks" $(PROFILE_VERSION) $(SIGNER)
i2pwinupdate.su3.torrent: prepupdate su3
mktorrent \

View File

@ -40,6 +40,8 @@ if [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
linuxsign I2P-Easy-Install-Bundle-$I2P_VERSION.exe
cp "I2P-Easy-Install-Bundle-$I2P_VERSION.exe" "I2P-Easy-Install-Bundle-$I2P_VERSION-signed.exe"
else
signtool.exe sign -a "I2P-Easy-Install-Bundle-$I2P_VERSION.exe"
#signtool.exe sign -a "I2P-Easy-Install-Bundle-$I2P_VERSION.exe"
echo "WARNING: Signing is temporarily disabled for the installer."
sleep 5s
cp "I2P-Easy-Install-Bundle-$I2P_VERSION.exe" "I2P-Easy-Install-Bundle-$I2P_VERSION-signed.exe"
fi

View File

@ -1,19 +0,0 @@
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks Menu</H1>
<DL><p>
<DT><A HREF="place:type=6&sort=14&maxResults=10" ADD_DATE="1539649423" LAST_MODIFIED="1539649424">Recent Tags</A>
<HR> <DT><A HREF="http://legwork.i2p/yacysearch.html?query=%s&verify=cacheonly&contentdom=text&nav=location%2Chosts%2Cauthors%2Cnamespace%2Ctopics%2Cfiletype%2Cprotocol%2Clanguage&startRecord=0&indexof=off&meanCount=5&resource=global&prefermaskfilter=&maximumRecords=10&timezoneOffset=0" ADD_DATE="1539652098" LAST_MODIFIED="1539652098" SHORTCUTURL="legwork.i2p">Search YaCy &#39;legwork&#39;: Search Page</A>
<DD>Software HTTP Freeware Home Page
<DT><H3 ADD_DATE="1539649419" LAST_MODIFIED="1539649423" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Toolbar</H3>
<DL><p>
<DT><A HREF="place:sort=8&maxResults=10" ADD_DATE="1539649423" LAST_MODIFIED="1539649423">Most Visited</A>
<DT><A HREF="http://i2p-projekt.i2p/" ADD_DATE="1538511080" LAST_MODIFIED="1538511080">I2P Anonymous Network</A>
<DD>Anonymous peer-to-peer distributed communication layer built with open source tools and designed to run any traditional Internet service such as email, IRC or web hosting.
</DL><p>
</DL>

View File

@ -1,45 +0,0 @@
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* only needed once */
@namespace html url("http://www.w3.org/1999/xhtml");
#PersonalToolbar,
#PanelUI-Button,
#PanelUI-menu-button,
#star-button,
#forward-button,
#home-button,
#bookmarks-toolbar-button,
#library-button,
#sidebar-button,
#pocket-button,
#fxa-toolbar-menu-button,
#reader-mode-button,
#identity-icon {
visibility: collapse;
}
#urlbar-background {
background-color: black !important;
}
/* Remove back button circle */
#back-button:not(:hover),
#back-button:not(:hover)>.toolbarbutton-icon {
background: transparent !important;
border: none !important;
box-shadow: none !important;
}
#back-button:hover,
#back-button:hover>.toolbarbutton-icon {
border: none !important;
border-radius: 2px !important;
}
#urlbar-container,
#nav-bar {
visibility: collapse !important
}

View File

@ -1,65 +0,0 @@
user_pref("extensions.https_everywhere._observatory.enabled", false);
user_pref("extensions.https_everywhere.options.autoUpdateRulesets", false);
user_pref("extensions.https_everywhere.globalEnabled", false);
user_pref("extensions.https_everywhere._observatory.submit_during_tor", false);
user_pref("extensions.https_everywhere._observatory.submit_during_nontor", false);
user_pref("extensions.https_everywhere._observatory.use_custom_proxy", true);
user_pref("extensions.https_everywhere._observatory.proxy_host", "127.0.0.1");
user_pref("extensions.https_everywhere._observatory.proxy_port", 4444);
user_pref("extensions.torbutton.use_nontor_proxy", true);
//For socket conversion: in the future, I'll need to make TBB communicate with
//i2p over a unix socket. Fortunately, this is how you do that. It will be
//configurable in a similar way to the host:port configuration when that happens.
//user_pref("extensions.torlauncher.socks_port_use_ipc", );
//user_pref("extensions.torlauncher.socks_ipc_path", "");
user_pref("extensions.torlauncher.start_tor", false);
//user_pref("extensions.torlauncher.default_bridge_type", "");
user_pref("extensions.torlauncher.prompt_at_startup", false);
// Resist-fingerprinting and first-party isolation enable
user_pref("privacy.resistFingerprinting", true);
user_pref("privacy.firstparty.isolate", true);
// Use i2p http proxy for all connections and set homepage to safe local form.
// DON'T allow access to the admin panel from the profile we browse i2p with.
user_pref("network.proxy.no_proxies_on", "127.0.0.1:7657,localhost:7657,127.0.0.1:7662,localhost:7662,127.0.0.1:7669,localhost:7669");
user_pref("network.proxy.type", 1);
user_pref("network.proxy.http", "127.0.0.1");
user_pref("network.proxy.http_port", 4444);
user_pref("network.proxy.ssl", "127.0.0.1");
user_pref("network.proxy.ssl_port", 4444);
user_pref("network.proxy.ftp", "127.0.0.1");
user_pref("network.proxy.ftp_port", 4444);
user_pref("network.proxy.socks", "127.0.0.1");
user_pref("network.proxy.socks_port", 4444);
user_pref("network.proxy.share_proxy_settings", true);
user_pref("browser.startup.homepage", "about:blank");
user_pref("dom.security.https_only_mode", false);
user_pref("keyword.enabled", false);
user_pref("extensions.allowPrivateBrowsingByDefault", true);
user_pref("extensions.PrivateBrowsing.notification", false);
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
user_pref("extensions.pocket.enabled", false);
user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
user_pref("browser.newtabpage.activity-stream.showSponsored", false);
user_pref("services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsored", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
user_pref("browser.newtabpage.activity-stream.default.sites", "http://127.0.0.1:7657/home,http://127.0.0.1:7657/i2psnark/,http://127.0.0.1:7657/susimail/");
user_pref("browser.newtabpage.activity-stream.feeds.topsites", true);
user_pref("ui.use_standins_for_native_colors", true);
user_pref("webgl.disable-extensions", true);
user_pref("webgl.min_capability_mode", true);
user_pref("webgl.disable-fail-if-major-performance-caveat", true);
user_pref("webgl.enable-webgl2", false);
user_pref("media.navigator.enabled", false);
user_pref("dom.w3c_touch_events.enabled", false);
user_pref("browser.display.use_system_colors", false);
user_pref("extensions.autoDisableScopes", 0);
user_pref("extensions.enabledScopes", 1);

Binary file not shown.

View File

@ -1,229 +0,0 @@
/*
Overrides#
for Extension Preferences# Tor Browser Bundle# Do not edit this file.##This file is modified from a file included in the Tor Browser Bundle.##Copyright 2017 The Tor Project.See LICENSE.tor#
for licensing information.
HTTPS Everywhere Preferences:
*/
user_pref("extensions.https_everywhere._observatory.popup_shown", true);
user_pref("extensions.https_everywhere.toolbar_hint_shown", true);
/*
NoScript Preferences: #In order to disable all scripts by
default, uncomment the following line...#user_pref("capability.policy.maonoscript.javascript.enabled", "noAccess");#
and comment out the following line
*/
user_pref("capability.policy.maonoscript.javascript.enabled", "allAccess");
user_pref("capability.policy.maonoscript.sites", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
user_pref("noscript.default", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
user_pref("noscript.mandatory", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
user_pref("noscript.ABE.enabled", false);
user_pref("noscript.ABE.notify", false);
user_pref("noscript.ABE.wanIpAsLocal", false);
user_pref("noscript.confirmUnblock", false);
user_pref("noscript.contentBlocker", true);
user_pref("noscript.firstRunRedirection", false);
user_pref("noscript.global", true);
user_pref("noscript.gtemp", "");
user_pref("noscript.opacizeObject", 3);
user_pref("noscript.forbidWebGL", true);
user_pref("noscript.forbidFonts", true);
user_pref("noscript.options.tabSelectedIndexes", "5,0,0");
user_pref("noscript.policynames", "");
user_pref("noscript.secureCookies", true);
user_pref("noscript.showAllowPage", false);
user_pref("noscript.showBaseDomain", false);
user_pref("noscript.showDistrust", false);
user_pref("noscript.showRecentlyBlocked", false);
user_pref("noscript.showTemp", false);
user_pref("noscript.showTempToPerm", false);
user_pref("noscript.showUntrusted", false);
user_pref("noscript.STS.enabled", false);
user_pref("noscript.subscription.lastCheck", -142148139);
user_pref("noscript.temp", "");
user_pref("noscript.untrusted", "");
user_pref("noscript.forbidMedia", true);
user_pref("noscript.allowWhitelistUpdates", false);
user_pref("noscript.fixLinks", false);
// Now handled by plugins.click_to_play // Not in this one.
user_pref("noscript.forbidFlash", true);
user_pref("noscript.forbidSilverlight", true);
user_pref("noscript.forbidJava", true);
user_pref("noscript.forbidPlugins", true);
// Usability tweaks
user_pref("noscript.showPermanent", false);
user_pref("noscript.showTempAllowPage", true);
user_pref("noscript.showRevokeTemp", true);
user_pref("noscript.notify", false);
user_pref("noscript.autoReload", true);
user_pref("noscript.autoReload.allTabs", false);
user_pref("noscript.cascadePermissions", true);
user_pref("noscript.restrictSubdocScripting", true);
user_pref("noscript.showVolatilePrivatePermissionsToggle", false);
user_pref("noscript.volatilePrivatePermissions", true);
user_pref("noscript.clearClick", 0);
user_pref("intl.locale.matchOS", false);
user_pref("extensions.https_everywhere._observatory.enabled", false);
user_pref("extensions.https_everywhere.options.autoUpdateRulesets", false);
user_pref("extensions.https_everywhere.globalEnabled", false);
user_pref("extensions.https_everywhere._observatory.submit_during_tor", false);
user_pref("extensions.https_everywhere._observatory.submit_during_nontor", false);
user_pref("extensions.https_everywhere._observatory.use_custom_proxy", true);
user_pref("extensions.https_everywhere._observatory.proxy_host", "127.0.0.1");
user_pref("extensions.https_everywhere._observatory.proxy_port", 4444);
user_pref("extensions.torbutton.use_nontor_proxy", true);
//For socket conversion: in the future, I'll need to make TBB communicate with
//i2p over a unix socket. Fortunately, this is how you do that. It will be
//configurable in a similar way to the host:port configuration when that happens.
//user_pref("extensions.torlauncher.socks_port_use_ipc", );
//user_pref("extensions.torlauncher.socks_ipc_path", "");
// TODO: this is a Tor Browser specific setting which is ignored on Firefox. If
// I make it true, the SOCKS outproxy will have something to connect to. But I
// need to test more to find out if that's prudent.
user_pref("extensions.torlauncher.start_tor", false);
//user_pref("extensions.torlauncher.default_bridge_type", "");
user_pref("extensions.torlauncher.prompt_at_startup", false);
// Resist-fingerprinting and first-party isolation enable
user_pref("privacy.resistFingerprinting", true);
user_pref("privacy.firstparty.isolate", true);
// Use i2p http proxy for all connections and set homepage to safe local form.
// DON'T allow access to the admin panel from the profile we browse i2p with.
user_pref("network.proxy.no_proxies_on", "127.0.0.1:7657,localhost:7657,127.0.0.1:7662,localhost:7662,127.0.0.1:7669,localhost:7669");
user_pref("network.proxy.type", 1);
user_pref("network.proxy.http", "127.0.0.1");
user_pref("network.proxy.http_port", 4444);
user_pref("network.proxy.ssl", "127.0.0.1");
user_pref("network.proxy.ssl_port", 4444);
user_pref("network.proxy.ftp", "127.0.0.1");
user_pref("network.proxy.ftp_port", 4444);
user_pref("network.proxy.socks", "127.0.0.1");
user_pref("network.proxy.socks_port", 4444);
user_pref("network.proxy.share_proxy_settings", true);
user_pref("browser.startup.homepage", "http://127.0.0.1:7657/home");
// Privacy-harden and disable irrelevant features.
user_pref("app.normandy.api_url", "");
user_pref("app.normandy.enabled", false);
user_pref("app.update.auto", false);
user_pref("app.update.enabled", false);
user_pref("beacon.enabled", false);
user_pref("browser.aboutHomeSnippets.updateUrl", "");
user_pref("browser.cache.disk_cache_ssl", false);
user_pref("browser.cache.disk.enable", false);
user_pref("browser.cache.offline.enable", false);
user_pref("browser.disableResetPrompt", true);
user_pref("browser.display.use_document_fonts", 0);
user_pref("browser.fixup.alternate.enabled", false);
user_pref("browser.formfill.enable", false);
user_pref("browser.library.activity-stream.enabled", false);
user_pref("browser.newtabpage.activity-stream.disableSnippets", true);
user_pref("browser.newtabpage.activity-stream.enabled", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false);
user_pref("browser.newtabpage.activity-stream.feeds.snippets", false);
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
user_pref("browser.newtabpage.activity-stream.feeds.topsites", false);
user_pref("browser.newtabpage.activity-stream.prerender", false);
user_pref("browser.newtabpage.activity-stream.showSearch", false);
user_pref("browser.newtabpage.enhanced", false);
user_pref("browser.newtabpage.introShown", true);
user_pref("browser.newtab.preload", false);
user_pref("browser.onboarding.enabled", false);
user_pref("browser.pagethumbnails.capturing_disabled", true);
user_pref("browser.safebrowsing.appRepURL", "");
user_pref("browser.safebrowsing.blockedURIs.enabled", false);
user_pref("browser.safebrowsing.downloads.enabled", false);
user_pref("browser.safebrowsing.downloads.remote.enabled", false);
user_pref("browser.safebrowsing.downloads.remote.url", "");
user_pref("browser.safebrowsing.enabled", false);
user_pref("browser.safebrowsing.malware.enabled", false);
user_pref("browser.safebrowsing.phishing.enabled", false);
user_pref("browser.search.geoip.timeout", 1);
user_pref("browser.search.suggest.enabled", false);
user_pref("browser.selfsupport.url", "");
user_pref("browser.send_pings", false);
user_pref("browser.shell.checkDefaultBrowser", false);
user_pref("browser.startup.homepage_override.mstone", "ignore");
user_pref("browser.startup.page", 0);
user_pref("browser.toolbarbuttons.introduced.pocket-button", true);
user_pref("browser.urlbar.speculativeConnect.enabled", false);
user_pref("browser.urlbar.trimURLs", false);
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("datareporting.policy.dataSubmissionEnabled", false);
user_pref("dom.battery.enabled", false);
user_pref("dom.enable_performance", false);
user_pref("dom.enable_performance_navigation_timing", false);
user_pref("dom.enable_resource_timing", false);
user_pref("dom.event.clipboardevents.enabled", false);
user_pref("dom.gamepad.enabled", false);
user_pref("dom.indexedDB.enabled", false);
user_pref("dom.min_timeout_value", 400);
user_pref("dom.push.connection.enabled", false);
user_pref("dom.push.enabled", false);
user_pref("dom.serviceWorkers.enabled", false);
user_pref("dom.serviceWorkers.interception.enabled", false);
user_pref("dom.storage.enabled", false);
user_pref("dom.webaudio.enabled", false);
user_pref("extensions.autoDisableScopes", 0);
user_pref("extensions.enabledScopes", 1);
user_pref("extensions.getAddons.cache.enabled", false);
user_pref("extensions.getAddons.showPane", false);
user_pref("extensions.pocket.enabled", false);
user_pref("extensions.screenshots.disabled", true);
user_pref("extensions.webservice.discoverURL", "");
user_pref("geo.enabled", false);
user_pref("geo.wifi.uri", "");
user_pref("gfx.downloadable_fonts.disable_cache", true);
user_pref("javascript.options.shared_memory", false);
user_pref("layout.css.visited_links_enabled", false);
user_pref("media.autoplay.enabled", false);
user_pref("media.cache_size", 0);
user_pref("media.navigator.enabled", false);
user_pref("media.peerconnection.ice.no_host", true);
user_pref("media.video_stats.enabled", false);
user_pref("captivedetect.canonicalURL", "");
user_pref("network.captive-portal-service.enabled", false);
user_pref("network.cookie.cookieBehavior", 1);
user_pref("network.cookie.lifetimePolicy", 2);
user_pref("network.dns.disablePrefetch", true);
user_pref("network.http.referer.spoofSource", true);
user_pref("network.http.referer.trimmingPolicy", 2);
user_pref("network.http.referer.XOriginPolicy", 2);
user_pref("network.prefetch-next", false);
user_pref("privacy.donottrackheader.enabled", true);
user_pref("privacy.donottrackheader.value", 1);
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.coverage.opt-out", true);
user_pref("toolkit.telemetry.enabled", false);
user_pref("toolkit.telemetry.server", "");
user_pref("toolkit.telemetry.unified", false);
user_pref("webgl.disabled", true);
user_pref("browser.chrome.errorReporter.infoURL", "");
user_pref("breakpad.reportURL", "");
//user_pref("browser.newtabpage.activity-stream.default.sites", "");
user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
user_pref("browser.newtabpage.activity-stream.showSponsored", false);
user_pref("services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsored", false);
user_pref("browser.newtabpage.enabled", true);
user_pref("browser.newtabpage.activity-stream.default.sites", "http://planet.i2p/,http://legwork.i2p/,http://i2pwiki.i2p/,http://i2pforums.i2p/,http://zzz.i2p/");
user_pref("dom.security.https_only_mode", false);
user_pref("keyword.enabled", false);
user_pref("extensions.allowPrivateBrowsingByDefault", true);
user_pref("extensions.PrivateBrowsing.notification", false);
user_pref("browser.newtabpage.activity-stream.feeds.topsites", true);
user_pref("ui.use_standins_for_native_colors", true);
user_pref("webgl.disable-extensions", true);
user_pref("webgl.min_capability_mode", true);
user_pref("webgl.disable-fail-if-major-performance-caveat", true);
user_pref("webgl.enable-webgl2", false);
user_pref("dom.w3c_touch_events.enabled", false);
user_pref("browser.privatebrowsing.autostart", false);
user_pref("browser.display.use_system_colors", false);

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
1.9.7

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

@ -4,7 +4,7 @@ UniCode true
!define APPNAME "I2PBrowser-Launcher"
!define COMPANYNAME "I2P"
!define DESCRIPTION "This is a tool which contains an I2P router, a bundled JVM, and a tool for automatically configuring a browser to use with I2P."
!define I2P_MESSAGE "Could not find I2P. Installing portable Jpackaged I2P."
!define I2P_MESSAGE "Please choose a directory."
!define LAUNCH_TEXT "Start I2P?"
!define LICENSE_TITLE "Many Licenses"
!define CONSOLE_URL "http://127.0.0.1:7657/home"
@ -13,12 +13,12 @@ UniCode true
!include i2pbrowser-jpackage.nsi
!include FindProcess.nsh
var I2PINSTEXE
#var INSTDIR
SetOverwrite on
!define I2PINSTEXE
!define I2PINSTEXE_USERMODE "$LOCALAPPDATA\i2p"
!define INSTDIR
!define I2PINSTEXE_USERMODE "$LOCALAPPDATA\i2peasy"
!define RAM_NEEDED_FOR_64BIT 0x80000000
@ -122,18 +122,20 @@ PageEx license
PageExEnd
PageEx directory
dirtext "${I2P_MESSAGE}"
dirvar $I2PINSTEXE
dirvar $INSTDIR
PageCallbacks routerDetect
PageExEnd
Page instfiles
Function .onInit
StrCpy $I2PINSTEXE "${I2PINSTEXE_USERMODE}"
# Note: This is all redundant and I know it.
# Admin installs have been migrated to user-mode installs.
# But I'm leaving it because I might need it again if I support service installs.
StrCpy $INSTDIR "${I2PINSTEXE_USERMODE}"
UserInfo::GetAccountType
pop $0
${If} $0 != "admin"
StrCpy $INSTDIR "$LOCALAPPDATA\${COMPANYNAME}\${APPNAME}"
StrCpy $I2PINSTEXE "${I2PINSTEXE_USERMODE}"
StrCpy $INSTDIR "${I2PINSTEXE_USERMODE}"
${EndIf}
!insertmacro MUI_LANGDLL_DISPLAY
#Call ShouldInstall64Bit
@ -141,34 +143,22 @@ Function .onInit
FunctionEnd
Function routerDetect
createDirectory $I2PINSTEXE
SetOutPath $I2PINSTEXE\app
createDirectory $INSTDIR
SetOutPath $INSTDIR\app
File /a /r "I2P\app\"
SetOutPath $I2PINSTEXE\runtime
SetOutPath $INSTDIR\runtime
File /a /r "I2P\runtime\"
SetOutPath $I2PINSTEXE
SetOutPath $INSTDIR\config
File /a /r "I2P\config\"
SetOutPath $INSTDIR
File /a /r "I2P\I2P.exe"
# The NSIS Installer uses an ico icon, the jpackage-only ones use png
File /a /r "I2P\ui2pbrowser_icon.ico"
File "I2P\config\jpackaged"
createDirectory "$I2PINSTEXE\"
SetOutPath "$I2PINSTEXE\"
IfFileExists $I2PINSTEXE\router.config +2 0
File /a /r "I2P/config/router.config"
IfFileExists $I2PINSTEXE\clients.config +2 0
File /a /r "I2P/config/clients.config"
IfFileExists $I2PINSTEXE\wrapper.config +2 0
File /a /r "I2P/config/wrapper.config"
IfFileExists $I2PINSTEXE\hosts.txt +2 0
File /a /r "I2P/config/hosts.txt"
IfFileExists $I2PINSTEXE\eepsite +2 0
File /a /r "I2P/config/eepsite"
IfFileExists $I2PINSTEXE\webapps +2 0
File /a /r "I2P/config/webapps"
createDirectory "$INSTDIR\"
SetOutPath "$INSTDIR\"
File /a /r "I2P/config/certificates"
File /a /r "I2P/config/geoip"
File /a /r "I2P/config/i2ptunnel.config"
FunctionEnd
Function installerFunction
@ -178,62 +168,51 @@ Function installerFunction
Sleep 500
${LoopWhile} $0 <> 0
${EndIf}
# delete the jpackaged file for safety. Remove this IMMEDIATELY after the next release.
# early-adopters and daily-build users may have to manually delete config files if they
# uninstall.
# RELATED: line 246
Delete "$INSTDIR\jpackaged"
# set the installation directory as the destination for the following actions
createDirectory $INSTDIR
SetOutPath $INSTDIR
File ui2pbrowser_icon.ico
# Update jpackaged I2P router, if it exists
${If} ${FileExists} "$I2PINSTEXE\jpackaged"
createDirectory $I2PINSTEXE
SetOutPath $I2PINSTEXE
${If} ${Silent}
ReadEnvStr $0 OLD_I2P_VERSION
${If} $0 < ${I2P_VERSION}
call routerDetect
${EndIf}
${Else}
call routerDetect
${EndIf}
${EndIf}
# Update jpackaged I2P router
call routerDetect
# Install the launcher scripts
createDirectory "$INSTDIR"
#SetOutPath "$INSTDIR"
#File "win/*"
# Install the licenses
createDirectory "$INSTDIR\licenses"
SetOutPath "$INSTDIR\licenses"
File /a /r "licenses/*"
SetOutPath "$I2PINSTEXE"
SetOutPath "$INSTDIR"
createDirectory "$SMPROGRAMS\${APPNAME}"
CreateShortCut "$SMPROGRAMS\${APPNAME}\Browse I2P.lnk" "$I2PINSTEXE\I2P.exe" "" "$INSTDIR\ui2pbrowser_icon.ico"
CreateShortCut "$SMPROGRAMS\${APPNAME}\Browse I2P - Temporary Identity.lnk" "$I2PINSTEXE\I2P.exe -private" "" "$INSTDIR\ui2pbrowser_icon.ico"
CreateShortCut "$SMPROGRAMS\${APPNAME}\Browse I2P.lnk" "$INSTDIR\I2P.exe" "" "$INSTDIR\ui2pbrowser_icon.ico"
CreateShortCut "$SMPROGRAMS\${APPNAME}\Browse I2P - Temporary Identity.lnk" "$INSTDIR\I2P.exe -private" "" "$INSTDIR\ui2pbrowser_icon.ico"
CreateShortCut "$DESKTOP\Browse I2P.lnk" "$I2PINSTEXE\I2P.exe" "" "$INSTDIR\ui2pbrowser_icon.ico"
CreateShortCut "$DESKTOP\Browse I2P - Temporary Identity.lnk" "$I2PINSTEXE\I2P.exe -private" "" "$INSTDIR\ui2pbrowser_icon.ico"
CreateShortCut "$DESKTOP\Browse I2P.lnk" "$INSTDIR\I2P.exe" "" "$INSTDIR\ui2pbrowser_icon.ico"
CreateShortCut "$DESKTOP\Browse I2P - Temporary Identity.lnk" "$INSTDIR\I2P.exe -private" "" "$INSTDIR\ui2pbrowser_icon.ico"
CreateShortCut "$SMPROGRAMS\${APPNAME}\Uninstall I2P Easy-Install Bundle.lnk" "$INSTDIR\uninstall-i2pbrowser.exe" "" "$INSTDIR\ui2pbrowser_icon.ico"
SetOutPath "$INSTDIR"
SetShellVarContext current
IfFileExists "$LOCALAPPDATA\I2P\eepsite\docroot" +2 0
IfFileExists "$INSTDIR\eepsite\docroot" +2 0
File /a /r "I2P\eepsite"
createDirectory "$I2PINSTEXE"
SetOutPath "$I2PINSTEXE"
createDirectory "$INSTDIR"
SetOutPath "$INSTDIR"
SetOutPath "$INSTDIR"
# create the uninstaller
WriteUninstaller "$INSTDIR\uninstall-i2pbrowser.exe"
CreateShortCut "$SMPROGRAMS\${APPNAME}\Uninstall I2P Easy-Install Bundle.lnk" "$INSTDIR\uninstall-i2pbrowser.exe" "" "$INSTDIR\ui2pbrowser_icon.ico"
# create a shortcut to the uninstaller
CreateShortCut "$SMPROGRAMS\${APPNAME}\Uninstall-${APPNAME}.lnk" "$INSTDIR\uninstall-i2pbrowser.exe"
FunctionEnd
@ -245,12 +224,12 @@ SectionEnd
# uninstaller section start
Section "uninstall"
# Uninstall the launcher scripts
Delete $INSTDIR\*
rmDir /r "$INSTDIR\"
${If} ${FileExists} "$I2PINSTEXE\jpackaged"
Delete $I2PINSTEXE\*
rmDir /r "$I2PINSTEXE"
${EndIf}
rmDir /r "$INSTDIR\app"
rmDir /r "$INSTDIR\config"
rmDir /r "$INSTDIR\runtime"
Delete "$INSTDIR\ui2pbrowser_icon.ico"
Delete "$INSTDIR\windowsUItoopie2.png"
Delete "$INSTDIR\I2P.exe"
# Remove shortcuts and folders
Delete "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk"
@ -262,16 +241,27 @@ Section "uninstall"
Delete "$DESKTOP\${APPNAME}.lnk"
Delete "$DESKTOP\Private Browsing-${APPNAME}.lnk"
rmDir /r "$SMPROGRAMS\${APPNAME}"
rmDir /r "$INSTDIR\firefox.profile.i2p\extensions"
rmDir /r "$INSTDIR\firefox.profile.i2p"
rmDir /r "$LOCALAPPDATA\${APPNAME}"
rmDir /r "$INSTDIR"
#### SUPER SUPER EXTRA IMPORTANT!
### RELATED: line 169
## IF YOU DO THIS WRONG YOU WILL BREAK CONFIGS:
## The purpose of the `jpackaged` file has changed, as has the point
## where it is created.
# 1. The jpackaged file is now created only **after** the jpackage itself
# has migrated default configs into the $INSTDIR. IF THEY ALREADY EXIST,
# it WILL NOT BE CREATED, even if there is a jpackage present. This is
# intentional behavior.
# 2. The jpackaged file now indicates that the configurations were created
# by running the jpackage, and not by an un-bundled router. If it is not
# present, then we have already deleted everything we are responsible for
# and don't need to do the section below.
${If} ${FileExists} "$INSTDIR\jpackaged"
Delete $INSTDIR\*
rmDir /r "$INSTDIR"
${EndIf}
# delete the uninstaller
Delete "$INSTDIR\uninstall-i2pbrowser.exe"
# uninstaller section end
SectionEnd
!define MUI_FINISHPAGE_RUN
@ -280,8 +270,8 @@ SectionEnd
!insertmacro MUI_PAGE_FINISH
Function LaunchLink
SetOutPath "$I2PINSTEXE"
StrCpy $OUTDIR $I2PINSTEXE
SetOutPath "$INSTDIR"
StrCpy $OUTDIR $INSTDIR
${If} ${Silent}
ReadEnvStr $0 RESTART_I2P
${If} $0 != ""

View File

@ -1,19 +0,0 @@
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks Menu</H1>
<DL><p>
<DT><A HREF="place:type=6&sort=14&maxResults=10" ADD_DATE="1539649423" LAST_MODIFIED="1539649424">Recent Tags</A>
<HR> <DT><A HREF="http://legwork.i2p/yacysearch.html?query=%s&verify=cacheonly&contentdom=text&nav=location%2Chosts%2Cauthors%2Cnamespace%2Ctopics%2Cfiletype%2Cprotocol%2Clanguage&startRecord=0&indexof=off&meanCount=5&resource=global&prefermaskfilter=&maximumRecords=10&timezoneOffset=0" ADD_DATE="1539652098" LAST_MODIFIED="1539652098" SHORTCUTURL="legwork.i2p">Search YaCy &#39;legwork&#39;: Search Page</A>
<DD>Software HTTP Freeware Home Page
<DT><H3 ADD_DATE="1539649419" LAST_MODIFIED="1539649423" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks Toolbar</H3>
<DL><p>
<DT><A HREF="place:sort=8&maxResults=10" ADD_DATE="1539649423" LAST_MODIFIED="1539649423">Most Visited</A>
<DT><A HREF="http://i2p-projekt.i2p/" ADD_DATE="1538511080" LAST_MODIFIED="1538511080">I2P Anonymous Network</A>
<DD>Anonymous peer-to-peer distributed communication layer built with open source tools and designed to run any traditional Internet service such as email, IRC or web hosting.
</DL><p>
</DL>

View File

@ -1,65 +0,0 @@
user_pref("extensions.https_everywhere._observatory.enabled", false);
user_pref("extensions.https_everywhere.options.autoUpdateRulesets", false);
user_pref("extensions.https_everywhere.globalEnabled", false);
user_pref("extensions.https_everywhere._observatory.submit_during_tor", false);
user_pref("extensions.https_everywhere._observatory.submit_during_nontor", false);
user_pref("extensions.https_everywhere._observatory.use_custom_proxy", true);
user_pref("extensions.https_everywhere._observatory.proxy_host", "127.0.0.1");
user_pref("extensions.https_everywhere._observatory.proxy_port", 4444);
user_pref("extensions.torbutton.use_nontor_proxy", true);
//For socket conversion: in the future, I'll need to make TBB communicate with
//i2p over a unix socket. Fortunately, this is how you do that. It will be
//configurable in a similar way to the host:port configuration when that happens.
//user_pref("extensions.torlauncher.socks_port_use_ipc", );
//user_pref("extensions.torlauncher.socks_ipc_path", "");
user_pref("extensions.torlauncher.start_tor", false);
//user_pref("extensions.torlauncher.default_bridge_type", "");
user_pref("extensions.torlauncher.prompt_at_startup", false);
// Resist-fingerprinting and first-party isolation enable
user_pref("privacy.resistFingerprinting", true);
user_pref("privacy.firstparty.isolate", true);
// Use i2p http proxy for all connections and set homepage to safe local form.
// DON'T allow access to the admin panel from the profile we browse i2p with.
user_pref("network.proxy.no_proxies_on", "127.0.0.1:7657,localhost:7657,127.0.0.1:7662,localhost:7662,127.0.0.1:7669,localhost:7669");
user_pref("network.proxy.type", 1);
user_pref("network.proxy.http", "127.0.0.1");
user_pref("network.proxy.http_port", 4444);
user_pref("network.proxy.ssl", "127.0.0.1");
user_pref("network.proxy.ssl_port", 4444);
user_pref("network.proxy.ftp", "127.0.0.1");
user_pref("network.proxy.ftp_port", 4444);
user_pref("network.proxy.socks", "127.0.0.1");
user_pref("network.proxy.socks_port", 4444);
user_pref("network.proxy.share_proxy_settings", true);
user_pref("browser.startup.homepage", "about:blank");
user_pref("dom.security.https_only_mode", false);
user_pref("keyword.enabled", false);
user_pref("extensions.allowPrivateBrowsingByDefault", true);
user_pref("extensions.PrivateBrowsing.notification", false);
user_pref("extensions.pocket.enabled", false);
user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
user_pref("browser.newtabpage.activity-stream.showSponsored", false);
user_pref("services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsored", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
user_pref("browser.newtabpage.activity-stream.default.sites", "http://planet.i2p/,http://legwork.i2p/,http://i2pwiki.i2p/,http://i2pforums.i2p/,http://zzz.i2p/");
user_pref("browser.newtabpage.activity-stream.feeds.topsites", true);
user_pref("ui.use_standins_for_native_colors", true);
user_pref("webgl.disable-extensions", true);
user_pref("webgl.min_capability_mode", true);
user_pref("webgl.disable-fail-if-major-performance-caveat", true);
user_pref("webgl.enable-webgl2", false);
user_pref("media.navigator.enabled", false);
user_pref("dom.w3c_touch_events.enabled", false);
user_pref("browser.privatebrowsing.autostart", false);
user_pref("browser.display.use_system_colors", false);
user_pref("dom.image-lazy-loading.enabled", false)
user_pref("extensions.autoDisableScopes", 0);
user_pref("extensions.enabledScopes", 1);

Binary file not shown.

View File

@ -1,229 +0,0 @@
/*
Overrides#
for Extension Preferences# Tor Browser Bundle# Do not edit this file.##This file is modified from a file included in the Tor Browser Bundle.##Copyright 2017 The Tor Project.See LICENSE.tor#
for licensing information.
HTTPS Everywhere Preferences:
*/
user_pref("extensions.https_everywhere._observatory.popup_shown", true);
user_pref("extensions.https_everywhere.toolbar_hint_shown", true);
/*
NoScript Preferences: #In order to disable all scripts by
default, uncomment the following line...#user_pref("capability.policy.maonoscript.javascript.enabled", "noAccess");#
and comment out the following line
*/
user_pref("capability.policy.maonoscript.javascript.enabled", "allAccess");
user_pref("capability.policy.maonoscript.sites", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
user_pref("noscript.default", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
user_pref("noscript.mandatory", "[System+Principal] about: about:tbupdate about:tor chrome: resource: blob: mediasource: moz-extension: moz-safe-about: about:neterror about:certerror about:feeds about:tabcrashed about:cache");
user_pref("noscript.ABE.enabled", false);
user_pref("noscript.ABE.notify", false);
user_pref("noscript.ABE.wanIpAsLocal", false);
user_pref("noscript.confirmUnblock", false);
user_pref("noscript.contentBlocker", true);
user_pref("noscript.firstRunRedirection", false);
user_pref("noscript.global", true);
user_pref("noscript.gtemp", "");
user_pref("noscript.opacizeObject", 3);
user_pref("noscript.forbidWebGL", true);
user_pref("noscript.forbidFonts", true);
user_pref("noscript.options.tabSelectedIndexes", "5,0,0");
user_pref("noscript.policynames", "");
user_pref("noscript.secureCookies", true);
user_pref("noscript.showAllowPage", false);
user_pref("noscript.showBaseDomain", false);
user_pref("noscript.showDistrust", false);
user_pref("noscript.showRecentlyBlocked", false);
user_pref("noscript.showTemp", false);
user_pref("noscript.showTempToPerm", false);
user_pref("noscript.showUntrusted", false);
user_pref("noscript.STS.enabled", false);
user_pref("noscript.subscription.lastCheck", -142148139);
user_pref("noscript.temp", "");
user_pref("noscript.untrusted", "");
user_pref("noscript.forbidMedia", true);
user_pref("noscript.allowWhitelistUpdates", false);
user_pref("noscript.fixLinks", false);
// Now handled by plugins.click_to_play // Not in this one.
user_pref("noscript.forbidFlash", true);
user_pref("noscript.forbidSilverlight", true);
user_pref("noscript.forbidJava", true);
user_pref("noscript.forbidPlugins", true);
// Usability tweaks
user_pref("noscript.showPermanent", false);
user_pref("noscript.showTempAllowPage", true);
user_pref("noscript.showRevokeTemp", true);
user_pref("noscript.notify", false);
user_pref("noscript.autoReload", true);
user_pref("noscript.autoReload.allTabs", false);
user_pref("noscript.cascadePermissions", true);
user_pref("noscript.restrictSubdocScripting", true);
user_pref("noscript.showVolatilePrivatePermissionsToggle", false);
user_pref("noscript.volatilePrivatePermissions", true);
user_pref("noscript.clearClick", 0);
user_pref("intl.locale.matchOS", false);
user_pref("extensions.https_everywhere._observatory.enabled", false);
user_pref("extensions.https_everywhere.options.autoUpdateRulesets", false);
user_pref("extensions.https_everywhere.globalEnabled", false);
user_pref("extensions.https_everywhere._observatory.submit_during_tor", false);
user_pref("extensions.https_everywhere._observatory.submit_during_nontor", false);
user_pref("extensions.https_everywhere._observatory.use_custom_proxy", true);
user_pref("extensions.https_everywhere._observatory.proxy_host", "127.0.0.1");
user_pref("extensions.https_everywhere._observatory.proxy_port", 4444);
user_pref("extensions.torbutton.use_nontor_proxy", true);
//For socket conversion: in the future, I'll need to make TBB communicate with
//i2p over a unix socket. Fortunately, this is how you do that. It will be
//configurable in a similar way to the host:port configuration when that happens.
//user_pref("extensions.torlauncher.socks_port_use_ipc", );
//user_pref("extensions.torlauncher.socks_ipc_path", "");
// TODO: this is a Tor Browser specific setting which is ignored on Firefox. If
// I make it true, the SOCKS outproxy will have something to connect to. But I
// need to test more to find out if that's prudent.
user_pref("extensions.torlauncher.start_tor", false);
//user_pref("extensions.torlauncher.default_bridge_type", "");
user_pref("extensions.torlauncher.prompt_at_startup", false);
// Resist-fingerprinting and first-party isolation enable
user_pref("privacy.resistFingerprinting", true);
user_pref("privacy.firstparty.isolate", true);
// Use i2p http proxy for all connections and set homepage to safe local form.
// DON'T allow access to the admin panel from the profile we browse i2p with.
user_pref("network.proxy.no_proxies_on", "127.0.0.1:7657,localhost:7657,127.0.0.1:7662,localhost:7662,127.0.0.1:7669,localhost:7669");
user_pref("network.proxy.type", 1);
user_pref("network.proxy.http", "127.0.0.1");
user_pref("network.proxy.http_port", 4444);
user_pref("network.proxy.ssl", "127.0.0.1");
user_pref("network.proxy.ssl_port", 4444);
user_pref("network.proxy.ftp", "127.0.0.1");
user_pref("network.proxy.ftp_port", 4444);
user_pref("network.proxy.socks", "127.0.0.1");
user_pref("network.proxy.socks_port", 4444);
user_pref("network.proxy.share_proxy_settings", true);
user_pref("browser.startup.homepage", "http://127.0.0.1:7657/home");
// Privacy-harden and disable irrelevant features.
user_pref("app.normandy.api_url", "");
user_pref("app.normandy.enabled", false);
user_pref("app.update.auto", false);
user_pref("app.update.enabled", false);
user_pref("beacon.enabled", false);
user_pref("browser.aboutHomeSnippets.updateUrl", "");
user_pref("browser.cache.disk_cache_ssl", false);
user_pref("browser.cache.disk.enable", false);
user_pref("browser.cache.offline.enable", false);
user_pref("browser.disableResetPrompt", true);
user_pref("browser.display.use_document_fonts", 0);
user_pref("browser.fixup.alternate.enabled", false);
user_pref("browser.formfill.enable", false);
user_pref("browser.library.activity-stream.enabled", false);
user_pref("browser.newtabpage.activity-stream.disableSnippets", true);
user_pref("browser.newtabpage.activity-stream.enabled", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false);
user_pref("browser.newtabpage.activity-stream.feeds.snippets", false);
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
user_pref("browser.newtabpage.activity-stream.feeds.topsites", false);
user_pref("browser.newtabpage.activity-stream.prerender", false);
user_pref("browser.newtabpage.activity-stream.showSearch", false);
user_pref("browser.newtabpage.enhanced", false);
user_pref("browser.newtabpage.introShown", true);
user_pref("browser.newtab.preload", false);
user_pref("browser.onboarding.enabled", false);
user_pref("browser.pagethumbnails.capturing_disabled", true);
user_pref("browser.safebrowsing.appRepURL", "");
user_pref("browser.safebrowsing.blockedURIs.enabled", false);
user_pref("browser.safebrowsing.downloads.enabled", false);
user_pref("browser.safebrowsing.downloads.remote.enabled", false);
user_pref("browser.safebrowsing.downloads.remote.url", "");
user_pref("browser.safebrowsing.enabled", false);
user_pref("browser.safebrowsing.malware.enabled", false);
user_pref("browser.safebrowsing.phishing.enabled", false);
user_pref("browser.search.geoip.timeout", 1);
user_pref("browser.search.suggest.enabled", false);
user_pref("browser.selfsupport.url", "");
user_pref("browser.send_pings", false);
user_pref("browser.shell.checkDefaultBrowser", false);
user_pref("browser.startup.homepage_override.mstone", "ignore");
user_pref("browser.startup.page", 0);
user_pref("browser.toolbarbuttons.introduced.pocket-button", true);
user_pref("browser.urlbar.speculativeConnect.enabled", false);
user_pref("browser.urlbar.trimURLs", false);
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("datareporting.policy.dataSubmissionEnabled", false);
user_pref("dom.battery.enabled", false);
user_pref("dom.enable_performance", false);
user_pref("dom.enable_performance_navigation_timing", false);
user_pref("dom.enable_resource_timing", false);
user_pref("dom.event.clipboardevents.enabled", false);
user_pref("dom.gamepad.enabled", false);
user_pref("dom.indexedDB.enabled", false);
user_pref("dom.min_timeout_value", 400);
user_pref("dom.push.connection.enabled", false);
user_pref("dom.push.enabled", false);
user_pref("dom.serviceWorkers.enabled", false);
user_pref("dom.serviceWorkers.interception.enabled", false);
user_pref("dom.storage.enabled", false);
user_pref("dom.webaudio.enabled", false);
user_pref("extensions.autoDisableScopes", 0);
user_pref("extensions.enabledScopes", 1);
user_pref("extensions.getAddons.cache.enabled", false);
user_pref("extensions.getAddons.showPane", false);
user_pref("extensions.pocket.enabled", false);
user_pref("extensions.screenshots.disabled", true);
user_pref("extensions.webservice.discoverURL", "");
user_pref("geo.enabled", false);
user_pref("geo.wifi.uri", "");
user_pref("gfx.downloadable_fonts.disable_cache", true);
user_pref("javascript.options.shared_memory", false);
user_pref("layout.css.visited_links_enabled", false);
user_pref("media.autoplay.enabled", false);
user_pref("media.cache_size", 0);
user_pref("media.navigator.enabled", false);
user_pref("media.peerconnection.ice.no_host", true);
user_pref("media.video_stats.enabled", false);
user_pref("captivedetect.canonicalURL", "");
user_pref("network.captive-portal-service.enabled", false);
user_pref("network.cookie.cookieBehavior", 1);
user_pref("network.cookie.lifetimePolicy", 2);
user_pref("network.dns.disablePrefetch", true);
user_pref("network.http.referer.spoofSource", true);
user_pref("network.http.referer.trimmingPolicy", 2);
user_pref("network.http.referer.XOriginPolicy", 2);
user_pref("network.prefetch-next", false);
user_pref("privacy.donottrackheader.enabled", true);
user_pref("privacy.donottrackheader.value", 1);
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.coverage.opt-out", true);
user_pref("toolkit.telemetry.enabled", false);
user_pref("toolkit.telemetry.server", "");
user_pref("toolkit.telemetry.unified", false);
user_pref("webgl.disabled", true);
user_pref("browser.chrome.errorReporter.infoURL", "");
user_pref("breakpad.reportURL", "");
//user_pref("browser.newtabpage.activity-stream.default.sites", "");
user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
user_pref("browser.newtabpage.activity-stream.showSponsored", false);
user_pref("services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsored", false);
user_pref("browser.newtabpage.enabled", true);
user_pref("browser.newtabpage.activity-stream.default.sites", "http://planet.i2p/,http://legwork.i2p/,http://i2pwiki.i2p/,http://i2pforums.i2p/,http://zzz.i2p/");
user_pref("dom.security.https_only_mode", false);
user_pref("keyword.enabled", false);
user_pref("extensions.allowPrivateBrowsingByDefault", true);
user_pref("extensions.PrivateBrowsing.notification", false);
user_pref("browser.newtabpage.activity-stream.feeds.topsites", true);
user_pref("ui.use_standins_for_native_colors", true);
user_pref("webgl.disable-extensions", true);
user_pref("webgl.min_capability_mode", true);
user_pref("webgl.disable-fail-if-major-performance-caveat", true);
user_pref("webgl.enable-webgl2", false);
user_pref("dom.w3c_touch_events.enabled", false);
user_pref("browser.privatebrowsing.autostart", false);
user_pref("browser.display.use_system_colors", false);

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
1.9.7

View File

@ -1,9 +0,0 @@
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=/usr/bin/i2pbrowser.sh
Name=I2P Browser
Categories=Network;WebBrowser;
Icon=/var/lib/i2pbrowser/icons/ui2pbrowser_icon.ico

View File

@ -1,9 +0,0 @@
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=/usr/local/bin/i2pbrowser
Name=I2P Browser
Categories=Network;WebBrowser;
Icon=/var/lib/i2pbrowser/icons/ui2pbrowser_icon.ico

View File

@ -1,9 +0,0 @@
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=/usr/bin/i2pconfig.sh
Name=I2P Configuration
Categories=Network;WebBrowser;
Icon=/var/lib/i2pbrowser/icons/ui2pbrowser_icon.ico

View File

@ -1,9 +0,0 @@
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=/usr/local/bin/i2pconfig
Name=I2P Configuration
Categories=Network;WebBrowser;
Icon=/var/lib/i2pbrowser/icons/ui2pbrowser_icon.ico

View File

@ -1,21 +0,0 @@
#! /usr/bin/env sh
# Works for Debian service installs. Sets up minified, custom profile for configuring I2P console.
if grep '^i2psvc:' /etc/passwd; then
I2P_HOME=$(grep '^i2psvc:' /etc/passwd | sed 's|i2psvc:x:||g' | sed 's|:/usr/sbin/nologin||g' | tr -d ':1234567890' | sed 's|ip|i2p|g')
ROUTER_CONFIG=$(sudo -u i2psvc ls $I2P_HOME/i2p-config/router.config)
fi
installer(){
if [ $(sudo -u i2psvc ls $I2P_HOME/i2p-config/router.config) ]; then
echo $I2P_HOME $ROUTER_CONFIG $0
if ! sudo -u i2psvc grep -R 'routerconsole.browser' "$I2P_HOME/i2p-config/router.config" ; then
echo "routerconsole.browser=/usr/local/bin/i2pconfig" | sudo tee -a "$I2P_HOME/i2p-config/router.config"
fi
fi
}
installer

View File

@ -1,44 +0,0 @@
#! /usr/bin/env sh
if [ -f "/etc/i2pbrowser/i2pbrowserrc" ]; then
. /etc/i2pbrowser/i2pbrowserrc
fi
if [ ! -z $I2PROUTER ]; then
"$I2PROUTER" start
fi
if [ -z $BROWSING_PROFILE ]; then
BROWSING_PROFILE="."
fi
if [ ! -d "$BROWSING_PROFILE" ]; then
mkdir -p "$BROWSING_PROFILE"
cp -vr /var/lib/i2pbrowser/profile/* "$BROWSING_PROFILE"
fi
if [ ! -f "$BROWSING_PROFILE/user.js" ]; then
echo "user.js not present in $BROWSING_PROFILE, this is not a Firefox profile"
exit 1
fi
if [ -z $FIREFOX ]; then
if [ -f "firefox/firefox" ]; then
FIREFOX="./firefox/firefox"
fi
FIREFOX=$(which firefox-esr)
if [ -z $FIREFOX ]; then
FIREFOX=$(which firefox)
fi
fi
if [ -z $FIREFOX ]; then
echo "Firefox does not appear to be in your \$PATH."
echo "Please install Firefox via a package manager, or"
echo "or set the FIREFOX variable in your shell to the"
echo "location of a Firefox executable."
exit 1
fi
echo $FIREFOX --profile "$BROWSING_PROFILE" $@
$FIREFOX --profile "$BROWSING_PROFILE" $@

View File

@ -1,17 +0,0 @@
I2PROUTER=$(which i2prouter)
if [ -z $I2PROUTER ]; then
I2PROUTER=/usr/sbin/i2prouter
fi
if [ ! -f $I2PROUTER ]; then
I2PROUTER="$HOME/i2p/i2prouter"
fi
if [ ! -f $I2PROUTER ]; then
I2PROUTER=""
fi
wget -q -O - "http://localhost:7657" >/dev/null && I2PROUTER=""
echo "$I2PROUTER"

View File

@ -1,8 +0,0 @@
if [ -f /etc/i2pbrowser/i2pbrowserdebianrc ]; then
. /etc/i2pbrowser/i2pbrowserdebianrc
fi
CONFIGURING_PROFILE=$HOME/i2p/firefox/webapps
BROWSING_PROFILE=$HOME/i2p/firefox/browsing
ROUTER_CONSOLE="127.0.0.1:7657"

View File

@ -1,60 +0,0 @@
#! /usr/bin/env sh
if [ -f "/etc/i2pbrowser/i2pbrowserrc" ]; then
. /etc/i2pbrowser/i2pbrowserrc
fi
if [ ! -z $I2PROUTER ]; then
"$I2PROUTER" start
fi
if [ -f "$HOME/.i2p/router.config" ]; then
if [ "$0" = "/usr/local/bin/i2pconfig" ]; then
if ! grep -R 'routerconsole.browser' "$HOME/.i2p/router.config" ; then
echo "routerconsole.browser=$0" | tee -a "$HOME/.i2p/router.config"
fi
fi
fi
if [ -z $CONFIGURING_PROFILE ]; then
CONFIGURING_PROFILE="."
fi
if [ -z $ROUTER_CONSOLE ]; then
ROUTER_CONSOLE="$1"
if [ -z $1 ]; then
ROUTER_CONSOLE="http://127.0.0.1:7657"
fi
fi
if [ ! -d "$CONFIGURING_PROFILE" ]; then
mkdir -p "$CONFIGURING_PROFILE"
cp -vr /var/lib/i2pbrowser/app-profile/* "$CONFIGURING_PROFILE"
fi
if [ ! -f "$CONFIGURING_PROFILE/user.js" ]; then
echo "user.js not present in $CONFIGURING_PROFILE, this is not a Firefox profile"
exit 1
fi
if [ -z $FIREFOX ]; then
if [ -f "firefox/firefox" ]; then
FIREFOX="./firefox/firefox"
fi
FIREFOX=$(which firefox-esr)
if [ -z $FIREFOX ]; then
FIREFOX=$(which firefox)
fi
fi
if [ -z $FIREFOX ]; then
echo "Firefox does not appear to be in your \$PATH."
echo "Please install Firefox via a package manager, or"
echo "or set the FIREFOX variable in your shell to the"
echo "location of a Firefox executable."
exit 1
fi
echo $FIREFOX --profile "$CONFIGURING_PROFILE" "$ROUTER_CONSOLE" $@
$FIREFOX --profile "$CONFIGURING_PROFILE" "$ROUTER_CONSOLE" $@

27
src/unix/torbrowser.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/bash
TORSOCKS=$(which torsocks)
if [ -f "${TORSOCKS}" ]; then
. "${TORSOCKS}" on
fi
version="$(curl -s https://aus1.torproject.org/torbrowser/update_3/release/downloads.json | jq -r ".version")"
locale="en-US" # mention your locale. default = en-US
if [ -d /etc/default/locale ]; then
. /etc/default/locale
locale=$(echo "${LANG}" | cut -d . -f1)
fi
if [ ! -f ./tor.keyring ]; then
gpg --auto-key-locate nodefault,wkd --locate-keys torbrowser@torproject.org
gpg --output ./tor.keyring --export torbrowser@torproject.org
fi
if [ ! -f "tor-browser-linux64-${version}_${locale}.tar.xz" ]; then
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/tor-browser-linux64-${version}_${locale}.tar.xz"
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/tor-browser-linux64-${version}_${locale}.tar.xz.asc"
fi
gpgv --keyring ./tor.keyring "tor-browser-linux64-${version}_${locale}.tar.xz.asc" "tor-browser-linux64-${version}_${locale}.tar.xz"
tar xvJf "tor-browser-linux64-${version}_${locale}.tar.xz"

32
src/win/torbrowser-windows.sh Executable file
View File

@ -0,0 +1,32 @@
#!/bin/bash
TORSOCKS=$(which torsocks)
#if [ -f "${TORSOCKS}" ]; then
# . "${TORSOCKS}" on
#fi
version="$(curl -s https://aus1.torproject.org/torbrowser/update_3/release/downloads.json | jq -r ".version")"
locale="en-US" # mention your locale. default = en-US
if [ -d /etc/default/locale ]; then
. /etc/default/locale
locale=$(echo "${LANG}" | cut -d . -f1)
fi
if [ ! -f ./tor.keyring ]; then
gpg --auto-key-locate nodefault,wkd --locate-keys torbrowser@torproject.org
gpg --output ./tor.keyring --export torbrowser@torproject.org
fi
if [ ! -f "tor-browser-linux64-${version}_${locale}.exe" ]; then
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/torbrowser-install-win64-${version}_${locale}.exe"
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/torbrowser-install-win64-${version}_${locale}.exe.asc"
fi
gpgv --keyring ./tor.keyring "torbrowser-install-win64-${version}_${locale}.exe.asc" "torbrowser-install-win64-${version}_${locale}.exe"
#tar xvJf "torbrowser-install-win64-${version}_${locale}.exe"
#for n in `seq 1 2000`; do echo $n; dd ibs=256 if="torbrowser-install-win64-${version}_${locale}.exe" count=2 skip=$n | file - ; done 2>/dev/null |less
#zip -FF "torbrowser-install-win64-${version}_${locale}.exe" --out extracted.zip
export WINEPREFIX=$(pwd)/../tmp
wine "torbrowser-install-win64-${version}_${locale}.exe" /S #/D .
cp -vr "$WINEPREFIX/drive_c/users/idk/Desktop/Tor Browser/" "Tor Browser"

View File

@ -8,8 +8,25 @@ cd "$SCRIPT_DIR" || exit 1
if [ -f "$SCRIPT_DIR/config_override.sh" ]; then
. "$SCRIPT_DIR/config_override.sh"
fi
export machine=unix
./clean.sh
wsl make distclean
./build.sh
tar czvf I2P.tar.gz I2P
cd "$SCRIPT_DIR/I2P" || exit 1
TORSOCKS=$(which torsocks)
if [ -f "${TORSOCKS}" ]; then
. "${TORSOCKS}" on
fi
./lib/torbrowser.sh
version="$(curl -s https://aus1.torproject.org/torbrowser/update_3/release/downloads.json | jq -r ".version")"
. "${TORSOCKS}" off
locale="en-US" # mention your locale. default = en-US
if [ -d /etc/default/locale ]; then
. /etc/default/locale
locale=$(echo "${LANG}" | cut -d . -f1)
fi
rm -vrf "tor-browser_${locale}"
cd "$SCRIPT_DIR" || exit 1
tar czvf I2P.tar.gz I2P

35
zip.sh Executable file
View File

@ -0,0 +1,35 @@
#! /usr/bin/env bash
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)
cd "$SCRIPT_DIR" || exit 1
. "$SCRIPT_DIR/config.sh"
if [ -f "$SCRIPT_DIR/config_override.sh" ]; then
. "$SCRIPT_DIR/config_override.sh"
fi
./clean.sh
wsl make distclean
./build.sh
./fixperms.sh
cd "$SCRIPT_DIR/I2P" || exit 1
TORSOCKS=$(which torsocks)
if [ -f "${TORSOCKS}" ]; then
. "${TORSOCKS}" on
fi
#./torbrowser-windows.sh
../src/win/torbrowser-windows.sh
version="$(curl -s https://aus1.torproject.org/torbrowser/update_3/release/downloads.json | jq -r ".version")"
. "${TORSOCKS}" off
locale="en-US" # mention your locale. default = en-US
if [ -d /etc/default/locale ]; then
. /etc/default/locale
locale=$(echo "${LANG}" | cut -d . -f1)
fi
rm -vrf "tor-browser_${locale}"
cd "$SCRIPT_DIR" || exit 1
rm -rf I2P-portable && cp -r I2P I2P-portable
#powershell Compress-Archive -force I2P-portable I2P-windows-portable.zip
zip -r I2P-windows-portable.zip I2P-portable