Compare commits
145 Commits
i2p-firefo
...
20220628
Author | SHA1 | Date | |
---|---|---|---|
c7bea957cb | |||
e246159285 | |||
a7c5151b56 | |||
23ae110698 | |||
46ef089acc | |||
235b6444e7 | |||
d5b1291a30 | |||
f7fa344ea8 | |||
698befcdda | |||
c9747734dc | |||
b4261675b0 | |||
b2b3ba75fb | |||
8257ee6625 | |||
e23db67782 | |||
ff733907c0 | |||
a09da35170 | |||
af5add3143 | |||
0f5eb563eb | |||
53dd311b58 | |||
6fc7d9a7b4 | |||
d283efdbf5 | |||
de56966a51 | |||
9b7f886e96 | |||
ec94eee4e2 | |||
17d3b9161f | |||
b8d1a48961 | |||
597207b425 | |||
d851dec3c4 | |||
1339df4ea6 | |||
02ed695417 | |||
0c0219c308 | |||
d47a6c1234 | |||
cc5f3052fa | |||
c10cf6aaeb | |||
17f2c8bdae | |||
7627dd9742 | |||
d4f14fdae9 | |||
1e18aa8c0d | |||
88ba9dc96e | |||
3fda252a34 | |||
dbc8376ebd | |||
ed53efea8f | |||
a4d9d17306 | |||
42b2e78bbe | |||
7fb9fd4e8d | |||
6ca76277db | |||
983813caaf | |||
5d9cd3b669 | |||
45a358bba4 | |||
1b2985665a | |||
a40a212774 | |||
78e703fd92 | |||
7f2ef1d074 | |||
c2b2624388 | |||
c5dda34ef2 | |||
8c507478b6 | |||
574321a1ee | |||
28ad8fcb61 | |||
af3e1696b8 | |||
ca4bf67e19 | |||
451e5d0494 | |||
ea8788e1c8 | |||
fa05c5f1cc | |||
3ab6464c54 | |||
0d29cd2bff | |||
cf4017f212 | |||
10ca0ec281 | |||
288007d6dd | |||
0e7b25ad2c | |||
27082b713e | |||
e16c7bca76 | |||
85fb43ca57 | |||
7a3598817d | |||
8e95435be0 | |||
9aba119a49 | |||
cf091c9e10 | |||
1cbd3f6553 | |||
467512bd26 | |||
af9c2460e9 | |||
6ffd0dae9a | |||
fb28051ba2 | |||
8f19517167 | |||
e55c57c6f8 | |||
e722cb4bec | |||
963d7e88b4 | |||
59baf37322 | |||
b949fa8a84 | |||
12b762d595 | |||
aa2ab5bbe5 | |||
e3f42a42bd | |||
3da8f56247 | |||
31c60f74e1 | |||
cd790ecae8 | |||
cfbeae0ecb | |||
b87e701ee0 | |||
f8c84ba50a | |||
5d3615a0c6 | |||
ec98865d33 | |||
978af1cb11 | |||
560f1c707a | |||
e29fdd95a1 | |||
39e1df1b10 | |||
93b6bc4b3e | |||
334e6525b1 | |||
46c6fb77e2 | |||
9305301bf5 | |||
d874204add | |||
66864c317d | |||
c426b73d79 | |||
a05f3777a7 | |||
e051d4095c | |||
73f94a120e | |||
74d5ccc47f | |||
4ce272765f | |||
714ef026f3 | |||
8135506213 | |||
ffb9efaab8 | |||
706a7a6fe2 | |||
af44dd357a | |||
c64f0fe632 | |||
cf3385cfd0 | |||
ef0b5c5cad | |||
9282d22e7b | |||
400b9d3edc | |||
4aa673a959 | |||
1f543c8db5 | |||
87f9cc063b | |||
6651a16fb2 | |||
9a34008c48 | |||
1f980fb016 | |||
cf394be352 | |||
51dca79a76 | |||
bb7dcaa907 | |||
9da43b3961 | |||
a28bb6ac3c | |||
44b2ae44ee | |||
e2ad0d190a | |||
f5a424f083 | |||
fe99c7bb05 | |||
bc36564f5d | |||
d8e7551edb | |||
3391c23abd | |||
723b4d0e27 | |||
09d07c8c88 | |||
1d0cf4aba7 |
10
.gitignore
vendored
10
.gitignore
vendored
@ -2,6 +2,7 @@ build
|
||||
*.deb
|
||||
*.tgz
|
||||
./I2P/
|
||||
I2P/
|
||||
i2pversion_override
|
||||
*.crl
|
||||
*.crt
|
||||
@ -9,3 +10,12 @@ i2pversion_override
|
||||
*.p12
|
||||
.stfolder
|
||||
*.url
|
||||
.vscode
|
||||
.version
|
||||
*.su3
|
||||
*.su3.torrent
|
||||
*.exe
|
||||
*.log
|
||||
cmd
|
||||
*.so
|
||||
*.jar
|
54
Makefile
54
Makefile
@ -3,19 +3,23 @@
|
||||
|
||||
-include config.mk
|
||||
|
||||
preset=`rm .version; make .version`
|
||||
preset=`rm .version; make version`
|
||||
|
||||
include .version
|
||||
-include .version
|
||||
|
||||
PROFILE_VERSION=$(MAJOR).$(MINOR).$(BUILD)
|
||||
|
||||
all: .version prep install.exe
|
||||
all: version prep install.exe
|
||||
|
||||
tag:
|
||||
git tag $(PROFILE_VERSION)
|
||||
|
||||
.version:
|
||||
version:
|
||||
echo !define VERSIONMAJOR $(VERSIONMAJOR) > src/nsis/i2pbrowser-version.nsi
|
||||
echo !define VERSIONMINOR $(VERSIONMINOR) >> src/nsis/i2pbrowser-version.nsi
|
||||
echo !define VERSIONBUILD $(VERSIONBUILD) >> src/nsis/i2pbrowser-version.nsi
|
||||
sed 's|!define VERSION||g' src/nsis/i2pbrowser-version.nsi | sed 's| |=|g' > .version
|
||||
rm -f version.txt
|
||||
make version.txt i2pbrowser-jpackage.nsi
|
||||
|
||||
version.txt:
|
||||
@ -23,23 +27,39 @@ version.txt:
|
||||
echo "$(PROFILE_VERSION)" > src/app-profile/version.txt
|
||||
|
||||
i2pbrowser-jpackage.nsi:
|
||||
echo "!define I2P_VERSION $(I2P_VERSION)" > src/nsis/i2pbrowser-jpackage.nsi
|
||||
echo "!define I2P_VERSION $(PROFILE_VERSION)" > src/nsis/i2pbrowser-jpackage.nsi
|
||||
|
||||
jpackage: .version I2P build/I2P/config all
|
||||
jpackage: version I2P build/I2P/config all
|
||||
|
||||
help: .version
|
||||
help: version
|
||||
@echo "I2P-Profile-Installer-$(PROFILE_VERSION)"
|
||||
@echo "$(SIGNER)"
|
||||
@echo "$(I2P_VERSION)"
|
||||
@echo "$(MAJOR).$(MINOR).$(BUILD)"
|
||||
@echo "$(preset)"
|
||||
|
||||
prep: profile.tgz app-profile.tgz profile build/licenses build/I2P build/I2P/config launchers
|
||||
prep: #launchers build/licenses profile.tgz app-profile.tgz profile build/I2P build/I2P/config #
|
||||
make launchers
|
||||
echo "launchers" >make.log
|
||||
make build/licenses
|
||||
echo "licenses" >make.log
|
||||
make profile.tgz
|
||||
echo "profilezip" >make.log
|
||||
make app-profile.tgz
|
||||
echo "appprofile" >make.log
|
||||
make profile
|
||||
echo "profile" >make.log
|
||||
make build/I2P
|
||||
echo "buildi2p" >make.log
|
||||
make build/I2P/config
|
||||
echo "buildi2pconfig" >make.log
|
||||
cp src/nsis/*.nsi build
|
||||
echo "nsi1" >make.log
|
||||
cp src/nsis/*.nsh build
|
||||
echo "nsi2" >make.log
|
||||
cp src/icons/*.ico build
|
||||
|
||||
install.exe:
|
||||
install.exe: #build/licenses
|
||||
cd build && makensis i2pbrowser-installer.nsi && cp I2P-Profile-Installer-*.exe ../ && echo "built windows installer"
|
||||
|
||||
export RES_DIR="../i2p.i2p.jpackage-build/installer/resources"
|
||||
@ -66,7 +86,7 @@ src/I2P/config: build/I2P
|
||||
cp -v $(RES_DIR)/i2ptunnel.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
|
||||
cat router.config >> src/I2P/config/router.config
|
||||
cat router.config > src/I2P/config/router.config
|
||||
cp -v $(RES_DIR)/hosts.txt src/I2P/config/hosts.txt
|
||||
cp -R $(RES_DIR)/certificates src/I2P/config/certificates
|
||||
cp -R $(RES_DIR)/eepsite src/I2P/config/eepsite
|
||||
@ -89,10 +109,20 @@ build/licenses: build
|
||||
mkdir -p build/licenses
|
||||
cp license/* build/licenses
|
||||
cp LICENSE.md build/licenses/MIT.txt
|
||||
unix2dos build/licenses/LICENSE.index
|
||||
cat build/licenses/LICENSE.index \
|
||||
build/licenses/EPL.txt \
|
||||
build/licenses/GPL+CLASSPATH.txt \
|
||||
build/licenses/HTTPS-Everywhere.txt \
|
||||
build/licenses/LICENSE.tor \
|
||||
build/licenses/MIT.txt \
|
||||
build/licenses/MPL2.txt \
|
||||
build/licenses/NoScript.txt \
|
||||
build/licenses/NSS.txt \
|
||||
build/licenses/I2P.txt > build/licenses/LICENSE.txt
|
||||
unix2dos build/licenses/LICENSE.txt
|
||||
|
||||
clean:
|
||||
rm -rf build app-profile-*.tgz profile-*.tgz I2P-Profile-Installer-*.exe *.deb src/I2P/config *.su3 .version *.url
|
||||
rm -rf build app-profile-*.tgz profile-*.tgz I2P-Profile-Installer-*.exe *.deb src/I2P/config *.su3 .version *.url make.log
|
||||
git clean -fdx src build
|
||||
|
||||
build:
|
||||
|
79
README.md
79
README.md
@ -4,22 +4,22 @@ I2P Browsing Profile for Firefox
|
||||
Features:
|
||||
---------
|
||||
|
||||
- Automatically select an up-to-date, secure Firefox or Tor Browser(On Windows) variant
|
||||
- Automatically configure a profile for I2P
|
||||
- Automatically block-list all non-I2P local destinations
|
||||
- Enable first-party isolation, anti-fingerprinting, letterboxing
|
||||
- Automatically sandbox I2P, Non-I2P, and I2P-Application cookiestores
|
||||
- Automatically select an up-to-date, secure Firefox or Tor Browser(On Windows) variant
|
||||
- Automatically configure a profile for I2P
|
||||
- Automatically block-list all non-I2P local destinations
|
||||
- Enable first-party isolation, anti-fingerprinting, letterboxing
|
||||
- Automatically sandbox I2P, Non-I2P, and I2P-Application cookiestores
|
||||
|
||||
Build Dependencies:
|
||||
-------------------
|
||||
|
||||
To build this, you will need the following software packages (all available in Debian) :
|
||||
|
||||
* make
|
||||
* nsis
|
||||
* dos2unix
|
||||
* curl
|
||||
* jq
|
||||
- make
|
||||
- nsis
|
||||
- dos2unix
|
||||
- curl
|
||||
- jq
|
||||
|
||||
In addition, you will need the NSIS plugin "ShellExecAsUser" which you can get from the
|
||||
[NSIS Wiki Page](https://nsis.sourceforge.io/ShellExecAsUser_plug-in). In order to install
|
||||
@ -32,14 +32,13 @@ cp -rv Plugins/* /usr/share/nsis/Plugins/
|
||||
|
||||
To build a Debian package, you'll also need
|
||||
|
||||
* checkinstall
|
||||
- checkinstall
|
||||
|
||||
Preparation
|
||||
-----------
|
||||
|
||||
Before you build, run the targets
|
||||
|
||||
|
||||
make clean-extensions
|
||||
make extensions
|
||||
|
||||
@ -60,6 +59,14 @@ console wrapper.
|
||||
install.exe - the windows installer, which sets up shortcuts to
|
||||
launch Firefox on Windows.
|
||||
|
||||
When generating a Windows build it's important to make sure that the
|
||||
licenses for all the bundled softare are included. This should happen
|
||||
automatically. When bundling software, describe the terms and where
|
||||
they are applied in the `LICENSE.index`, then add the full license
|
||||
to the `licenses` directory. Then, add the full license to the `cat`
|
||||
command in the `build/licenses` make target. The build/licenses
|
||||
target is run automatically during the build process.
|
||||
|
||||
Unix Support
|
||||
------------
|
||||
|
||||
@ -99,8 +106,8 @@ with `sudo service i2p start` then you can run the script:
|
||||
|
||||
/usr/local/bin/i2p-config-service-setup
|
||||
|
||||
Including a jpackaged I2P Router(EXPERIMENTAL)
|
||||
----------------------------------------------
|
||||
Including a jpackaged I2P Router
|
||||
--------------------------------
|
||||
|
||||
In order to include a jpackaged(dependency-free) I2P router in the Profile
|
||||
Bundle you will need to build the jpackaged I2P router as an "App Image" on
|
||||
@ -168,6 +175,9 @@ you should select "Checkout as is, commit as is" and leave line-endings alone.
|
||||
End-to-End Windows build process using Cygwin
|
||||
---------------------------------------------
|
||||
|
||||
I highly recommend you look into the Chocolatey package manager, which makes it much
|
||||
easier to configure these tools and keep them up to date.
|
||||
|
||||
**Prerequisites:** You need to have OpenJDK 14 or greater installed and configured
|
||||
with your `%JAVA_HOME%` environment variable configured and `%JAVA_HOME%/bin` on
|
||||
your `%PATH%`. You need to have Apache Ant installed and configured with `%ANT_HOME%`
|
||||
@ -178,27 +188,26 @@ select "Checkout as is, commit as is" and leave line-endings alone.
|
||||
|
||||
TODO: Add links to the respective instructions for each of these.
|
||||
|
||||
1. Run the Cygwin `setup-$arch.exe` for your platform to set up new packages.
|
||||
Select the `make` `jq` `dos2unix` and `curl` packages.
|
||||
2. Open a cygwin terminal.
|
||||
3. Clone `i2p.i2p` and `i2p.firefox`
|
||||
1. Run the Cygwin `setup-$arch.exe` for your platform to set up new packages. Select the `make` `jq` `dos2unix` and `curl` packages.
|
||||
2. Open a cygwin terminal.
|
||||
3. Clone `i2p.i2p` and `i2p.firefox`
|
||||
|
||||
git clone https://github.com/i2p/i2p.i2p
|
||||
git clone https://github.com/i2p/i2p.firefox
|
||||
|
||||
3. Move to the i2p.i2p directory. Build the .jar files required to build the App Image
|
||||
4. Move to the i2p.i2p directory. Build the .jar files required to build the App Image
|
||||
inside i2p.i2p. Return to home.
|
||||
|
||||
cd i2p.i2p
|
||||
ant clean pkg
|
||||
cd ..
|
||||
|
||||
4. Move into the i2p.firefox directory. Run the `./build.sh` script.
|
||||
5. Move into the i2p.firefox directory. Run the `./build.sh` script.
|
||||
|
||||
cd i2p.firefox
|
||||
./build.sh
|
||||
|
||||
5. Run `make` to build the installer.
|
||||
6. Run `make` to build the installer.
|
||||
|
||||
Doing a Release
|
||||
---------------
|
||||
@ -208,25 +217,29 @@ do a release. As a final step, someone must sign the `.exe` file using a
|
||||
Certificate which Windows will recognize. The current signer of the Windows
|
||||
bundle is Zlatinb. Standard Windows signing tools are used.
|
||||
|
||||
```sh
|
||||
# Release Copypasta
|
||||
./clean.sh
|
||||
wsl make distclean
|
||||
wsl make clean-extensions
|
||||
wsl make extensions
|
||||
./build.sh
|
||||
wsl make
|
||||
./sign.sh
|
||||
```
|
||||
|
||||
Building a signed update file
|
||||
-----------------------------
|
||||
|
||||
Building a signed update file for automatically updating a Windows I2P router
|
||||
requires you to also have Go installed in your Cygwin or WSL environment.
|
||||
With WSL, you can do this using the command:
|
||||
requires you to either be using linux, or have Go installed in your Cygwin or WSL environment.
|
||||
On Linux(Where I sign the su3 files), this works:
|
||||
|
||||
wsl sudo apt-get install golang-go
|
||||
make su3
|
||||
|
||||
With that dependency satisfied, you can then run:
|
||||
|
||||
wsl make su3
|
||||
|
||||
to build the signing tool if necessary and then package the installer in a
|
||||
to run the signing tool if necessary and then package the installer in a
|
||||
signed update file.
|
||||
|
||||
It's also probably possible to do this with the Java I2P distribution and a
|
||||
`.bat` script.
|
||||
|
||||
Docker Support
|
||||
--------------
|
||||
|
||||
@ -265,5 +278,3 @@ HTTPS Everywhere is developed on Github by the EFF:
|
||||
I2P in Private Browsing is developed on Gitlab and Github by idk and the community:
|
||||
- https://i2pgit.org/idk/I2P-in-Private-Browsing-Mode-Firefox
|
||||
- https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox
|
||||
|
||||
|
||||
|
36
build.sh
36
build.sh
@ -27,22 +27,21 @@ fi
|
||||
if [ "$JAVA" -lt "17" ]; then
|
||||
echo "It is highly recommended that you use Java 17+ to build release packages"
|
||||
fi
|
||||
sleep 5s
|
||||
|
||||
if [ -z "${JAVA_HOME}" ]; then
|
||||
JAVA_HOME=`type -p java|xargs readlink -f|xargs dirname|xargs dirname`
|
||||
echo "Building with: $JAVA, $JAVA_HOME"
|
||||
fi
|
||||
|
||||
echo "cleaning"
|
||||
./clean.sh
|
||||
if [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
|
||||
JAVA_HOME=`type -p java|xargs readlink -f|xargs dirname|xargs dirname`
|
||||
fi
|
||||
echo "Building with: $JAVA, $JAVA_HOME"
|
||||
sleep 5s
|
||||
|
||||
HERE="$PWD"
|
||||
if [ ! -d "$HERE/../i2p.i2p.jpackage-build/" ]; then
|
||||
git clone https://i2pgit.org/i2p-hackers/i2p.i2p "$HERE/../i2p.i2p.jpackage-build/"
|
||||
git clone -b "$VERSION" https://i2pgit.org/i2p-hackers/i2p.i2p "$HERE/../i2p.i2p.jpackage-build/"
|
||||
fi
|
||||
cd "$HERE/../i2p.i2p.jpackage-build/"
|
||||
git checkout "$VERSION"
|
||||
for i in $COUNT; do
|
||||
echo -n "$i...."; sleep 1s
|
||||
done
|
||||
@ -54,13 +53,25 @@ RES_DIR="$HERE/../i2p.i2p.jpackage-build/installer/resources"
|
||||
I2P_JARS="$I2P_PKG/lib"
|
||||
I2P_JBIGI="$HERE/../i2p.i2p.jpackage-build/installer/lib/jbigi"
|
||||
|
||||
|
||||
echo "compiling custom launcher"
|
||||
mkdir build
|
||||
mkdir -p build
|
||||
cp "$I2P_JARS"/*.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
|
||||
|
||||
if [ ! -f "$HERE/build/jna-platform.jar" ]; then
|
||||
wget -O "$HERE/build/jna-platform.jar" "https://repo1.maven.org/maven2/net/java/dev/jna/jna-platform/$JNA_VERSION/jna-platform-$JNA_VERSION.jar"
|
||||
fi
|
||||
|
||||
cd java
|
||||
"$JAVA_HOME"/bin/javac -d ../build -classpath "$HERE"/build/i2p.jar:"$HERE"/build/router.jar:"$HERE"/build/routerconsole.jar net/i2p/router/WinLauncher.java net/i2p/router/WindowsUpdatePostProcessor.java net/i2p/router/WinUpdateProcess.java
|
||||
"$JAVA_HOME"/bin/javac -d ../build -classpath "$HERE/build/jna.jar":"$HERE/build/jna-platform.jar":"$HERE/build/i2p.jar":"$HERE/build/router.jar":"$HERE/build/routerconsole.jar" \
|
||||
net/i2p/router/Elevator.java \
|
||||
net/i2p/router/Shell32X.java \
|
||||
net/i2p/router/WinLauncher.java \
|
||||
net/i2p/router/WindowsUpdatePostProcessor.java \
|
||||
net/i2p/router/WinUpdateProcess.java
|
||||
|
||||
cd ..
|
||||
|
||||
#echo "building launcher.jar"
|
||||
@ -80,6 +91,11 @@ echo "preparing to invoke jpackage for I2P version $I2P_VERSION"
|
||||
--java-options "--add-opens java.base/java.lang=ALL-UNNAMED" \
|
||||
--java-options "--add-opens java.base/sun.nio.fs=ALL-UNNAMED" \
|
||||
--java-options "--add-opens java.base/java.nio=ALL-UNNAMED" \
|
||||
--java-options "--add-opens java.base/java.util.Properties=ALL-UNNAMED" \
|
||||
--java-options "--add-opens java.base/java.util.Properties.defaults=ALL-UNNAMED" \
|
||||
$JPACKAGE_OPTS \
|
||||
--resource-dir build \
|
||||
--input build --main-jar launcher.jar --main-class net.i2p.router.WinLauncher
|
||||
|
||||
cp "$I2P_PKG/licenses/"* license/
|
||||
cp "$HERE/../i2p.i2p.jpackage-build/LICENSE.txt" license/I2P.txt
|
@ -1,3 +1,25 @@
|
||||
2022-05-8 idk
|
||||
* Add translations for Arabic, German, French, Italian, Japanese, Portuguese, Russian,
|
||||
and Chinese.
|
||||
* Add support for I2P+ Router Console detection. Not an endorsement of I2P+, just
|
||||
a convenience requested by a helpful user.
|
||||
* The build system has been radically improved in order to be simpler to set up and
|
||||
configure.
|
||||
* Fixed a bug where the build deleted a config file.
|
||||
|
||||
2022-05-5 idk
|
||||
* Fix a bug where the I2P router detection inappropriately prioritized an easy
|
||||
install bundle when a non-bundled instal was in use.
|
||||
|
||||
2022-03-25 idk
|
||||
* This release adds support for user-mode, non-privileged installation of the
|
||||
jpackaged router and the browser profile. Admin installation is still supported
|
||||
and detected automatically, to support existing bundles.
|
||||
* On restart to update, will detect if a router requires admin rights to install
|
||||
and will ask the user to authorize the update. In user-mode, no prompt will ever
|
||||
be seen.
|
||||
* Updates to the Firefox profiles to improve compatibility with more Firefoxes
|
||||
|
||||
2022-02-10 idk
|
||||
* This release fixes automatic update using Bittorrent within the I2P network
|
||||
and the custom Update PostProcessor.
|
||||
|
8
clean.sh
8
clean.sh
@ -1,8 +1,13 @@
|
||||
#! /usr/bin/env sh
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
|
||||
here=$(pwd)
|
||||
cd ../i2p.i2p.jpackage-build/
|
||||
ant distclean
|
||||
git checkout .
|
||||
git checkout master
|
||||
cd "$here"
|
||||
rm -rf \
|
||||
build \
|
||||
@ -18,4 +23,5 @@ rm -rf \
|
||||
wrapper.log \
|
||||
*.jar \
|
||||
*.exe \
|
||||
*.dmg
|
||||
*.dmg
|
||||
make clean
|
24
config.sh
Normal file → Executable file
24
config.sh
Normal file → Executable file
@ -2,22 +2,29 @@
|
||||
## If you need to use a different JVM, JDK, or other utility from
|
||||
# build.sh, set it in this file, for example:
|
||||
|
||||
#export PATH="$PATH:/c/Program Files/Java/jdk-17.0.3/bin/"
|
||||
#export JAVA_HOME="/c/Program Files/Java/jdk-17.0.3"
|
||||
export PATH="$PATH:/c/Program Files/Java/jdk-17.0.3/bin/"
|
||||
export JAVA_HOME="/c/Program Files/Java/jdk-17.0.3"
|
||||
# to use it for Oracle OpenJDK17
|
||||
|
||||
## Other potential values(NOT exhaustive):
|
||||
|
||||
#export PATH="$PATH:/c/Program Files/OpenJDK/jdk-17.0.2/bin/"
|
||||
#export JAVA_HOME="/c/Program Files/OpenJDK/jdk-17.0.2"
|
||||
#export PATH="$PATH:/c/Program Files/Java/jdk-18.0.1/bin/"
|
||||
#export JAVA_HOME="/c/Program Files/Java/jdk-18.0.1"
|
||||
#export PATH="$PATH:/c/Program Files/Eclipse Adoptium/jdk-17.0.2/bin/"
|
||||
#export JAVA_HOME="/c/Program Files/Eclipse Adoptium/jdk-17.0.2"
|
||||
#export PATH="$PATH:/c/Program Files/Eclipse Adoptium/jdk-17.0.3/bin/"
|
||||
#export JAVA_HOME="/c/Program Files/Eclipse Adoptium/jdk-17.0.3"
|
||||
#export PATH="$PATH:/c/Program Files/OpenJDK/jdk-17.0.3/bin/"
|
||||
#export JAVA_HOME="/c/Program Files/OpenJDK/jdk-17.0.3"
|
||||
|
||||
#BREAKS!
|
||||
#export PATH=/c/Program Files/GraalVM/graalvm-ce-java17-22.0.0.2/bin
|
||||
#export JAVA_HOME=/c/Program Files/GraalVM/graalvm-ce-java17-22.0.0.2
|
||||
#BREAKS!
|
||||
# might be fun to learn why this is broken
|
||||
|
||||
#WORKS WELL! GETS UPDATES AS SOON AS ORACLE! VIABLE ALTERNATIVE!
|
||||
#export PATH="$PATH:/c/Program Files/Amazon Corretto/jdk17.0.3_6/bin/"
|
||||
#export JAVA_HOME="/c/Program Files/Amazon Corretto/jdk17.0.3_6"
|
||||
#WORKS WELL! GETS UPDATES AS SOON AS ORACLE! VIABLE ALTERNATIVE!
|
||||
|
||||
# These are all things I built the package with today(April 20, 2022, idk)
|
||||
|
||||
@ -37,4 +44,7 @@
|
||||
# required to build this if you do not wish to edit your PATH across the entire
|
||||
# Windows session, and for setting ANT_HOME
|
||||
#export ANT_HOME="/c/apache-ant-1.10.9"
|
||||
#export PATH="$PATH:$ANT_HOME/bin/"
|
||||
#export PATH="$PATH:$ANT_HOME/bin/"
|
||||
|
||||
# Uncomment this to add signtool to the path so you don't have to fight with Visual Studio.
|
||||
export PATH="$PATH:/c/Program Files (x86)/Windows Kits/10/App Certification Kit/"
|
41
daily.sh
Executable file
41
daily.sh
Executable file
@ -0,0 +1,41 @@
|
||||
#! /usr/bin/env sh
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
|
||||
### 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 .
|
||||
./unsigned.sh
|
||||
|
||||
. "$HOME/github-release-config.sh"
|
||||
|
||||
. ./i2pversion
|
||||
|
||||
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"
|
||||
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"
|
||||
EXECHECKSUM=$(sha256sum "I2P-Profile-Installer-$I2P_VERSION.exe")
|
||||
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P-Profile-Installer-$I2P_VERSION.exe" -l "$EXECHECKSUM" -t "$TODAYSDATE" -n "I2P-Profile-Installer-$I2P_VERSION.exe"
|
||||
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P-Profile-Installer-$I2P_VERSION.exe" -l "$EXECHECKSUM" -t "$TODAYSDATE" -n "I2P-Profile-Installer-$I2P_VERSION.exe"
|
||||
cd build || exit
|
||||
tar -a -cf ../I2P.zip I2P
|
||||
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"
|
17
i2pversion
17
i2pversion
@ -1,15 +1,20 @@
|
||||
#! /usr/bin/env sh
|
||||
|
||||
JNA_VERSION=5.11.0
|
||||
export JNA_VERSION=5.11.0
|
||||
|
||||
#Comment this out to build from an alternate branch or
|
||||
# the tip of the master branch.
|
||||
I2P_VERSION=1.7.4
|
||||
export I2P_VERSION=1.7.4
|
||||
VERSION=i2p-jpackage-1.7.1
|
||||
export VERSION="$VERSION"
|
||||
VERSIONMAJOR=1
|
||||
VERSIONMINOR=8
|
||||
VERSIONBUILD=0
|
||||
I2P_VERSION="$VERSIONMAJOR.$VERSIONMINOR.$VERSIONBUILD"
|
||||
export I2P_VERSION="$VERSIONMAJOR.$VERSIONMINOR.$VERSIONBUILD"
|
||||
VERSION=i2p-1.8.0
|
||||
export VERSION=i2p-1.8.0
|
||||
|
||||
#Uncomment this to build from the tip of the master.
|
||||
#I2P_VERSION=1.7.0
|
||||
#export I2P_VERSION=1.7.0
|
||||
#I2P_VERSION=1.8.0
|
||||
#export I2P_VERSION=1.8.0
|
||||
#VERSION=master
|
||||
#export VERSION="$VERSION"
|
||||
|
33
java/net/i2p/router/Elevator.java
Normal file
33
java/net/i2p/router/Elevator.java
Normal file
@ -0,0 +1,33 @@
|
||||
package net.i2p.router;
|
||||
|
||||
import com.sun.jna.WString;
|
||||
import com.sun.jna.platform.win32.Kernel32;
|
||||
import com.sun.jna.platform.win32.Kernel32Util;
|
||||
|
||||
public class Elevator {
|
||||
public static void main(String... args) {
|
||||
executeAsAdministrator("c:\\windows\\system32\\notepad.exe", "");
|
||||
}
|
||||
|
||||
public static void executeAsAdministrator(String command, String args) {
|
||||
if (command == "" || command == null) {
|
||||
System.out.println("No command specified");
|
||||
return;
|
||||
}
|
||||
Shell32X.SHELLEXECUTEINFO execInfo = new Shell32X.SHELLEXECUTEINFO();
|
||||
execInfo.lpFile = new WString(command);
|
||||
if (args != null)
|
||||
execInfo.lpParameters = new WString(args);
|
||||
execInfo.nShow = Shell32X.SW_SHOWDEFAULT;
|
||||
execInfo.fMask = Shell32X.SEE_MASK_NOCLOSEPROCESS;
|
||||
execInfo.lpVerb = new WString("runas");
|
||||
boolean result = Shell32X.INSTANCE.ShellExecuteEx(execInfo);
|
||||
|
||||
if (!result) {
|
||||
int lastError = Kernel32.INSTANCE.GetLastError();
|
||||
String errorMessage = Kernel32Util.formatMessageFromLastErrorCode(lastError);
|
||||
throw new RuntimeException("Error performing elevation: " + lastError + ": " + errorMessage + " (apperror="
|
||||
+ execInfo.hInstApp + ")");
|
||||
}
|
||||
}
|
||||
}
|
111
java/net/i2p/router/Shell32X.java
Normal file
111
java/net/i2p/router/Shell32X.java
Normal file
@ -0,0 +1,111 @@
|
||||
package net.i2p.router;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import com.sun.jna.Native;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.Structure;
|
||||
import com.sun.jna.WString;
|
||||
import com.sun.jna.platform.win32.Shell32;
|
||||
import com.sun.jna.platform.win32.WinDef.HINSTANCE;
|
||||
import com.sun.jna.platform.win32.WinDef.HWND;
|
||||
import com.sun.jna.platform.win32.WinNT.HANDLE;
|
||||
import com.sun.jna.platform.win32.WinReg.HKEY;
|
||||
import com.sun.jna.win32.W32APIOptions;
|
||||
|
||||
public interface Shell32X extends Shell32 {
|
||||
Shell32X INSTANCE = (Shell32X) Native.loadLibrary("shell32", Shell32X.class, W32APIOptions.UNICODE_OPTIONS);
|
||||
|
||||
int SW_HIDE = 0;
|
||||
int SW_MAXIMIZE = 3;
|
||||
int SW_MINIMIZE = 6;
|
||||
int SW_RESTORE = 9;
|
||||
int SW_SHOW = 5;
|
||||
int SW_SHOWDEFAULT = 10;
|
||||
int SW_SHOWMAXIMIZED = 3;
|
||||
int SW_SHOWMINIMIZED = 2;
|
||||
int SW_SHOWMINNOACTIVE = 7;
|
||||
int SW_SHOWNA = 8;
|
||||
int SW_SHOWNOACTIVATE = 4;
|
||||
int SW_SHOWNORMAL = 1;
|
||||
|
||||
/** File not found. */
|
||||
int SE_ERR_FNF = 2;
|
||||
|
||||
/** Path not found. */
|
||||
int SE_ERR_PNF = 3;
|
||||
|
||||
/** Access denied. */
|
||||
int SE_ERR_ACCESSDENIED = 5;
|
||||
|
||||
/** Out of memory. */
|
||||
int SE_ERR_OOM = 8;
|
||||
|
||||
/** DLL not found. */
|
||||
int SE_ERR_DLLNOTFOUND = 32;
|
||||
|
||||
/** Cannot share an open file. */
|
||||
int SE_ERR_SHARE = 26;
|
||||
|
||||
int SEE_MASK_NOCLOSEPROCESS = 0x00000040;
|
||||
|
||||
int ShellExecute(int i, String lpVerb, String lpFile, String lpParameters, String lpDirectory, int nShow);
|
||||
|
||||
boolean ShellExecuteEx(SHELLEXECUTEINFO lpExecInfo);
|
||||
|
||||
public static class SHELLEXECUTEINFO extends Structure {
|
||||
/*
|
||||
* DWORD cbSize;
|
||||
* ULONG fMask;
|
||||
* HWND hwnd;
|
||||
* LPCTSTR lpVerb;
|
||||
* LPCTSTR lpFile;
|
||||
* LPCTSTR lpParameters;
|
||||
* LPCTSTR lpDirectory;
|
||||
* int nShow;
|
||||
* HINSTANCE hInstApp;
|
||||
* LPVOID lpIDList;
|
||||
* LPCTSTR lpClass;
|
||||
* HKEY hkeyClass;
|
||||
* DWORD dwHotKey;
|
||||
* union {
|
||||
* HANDLE hIcon;
|
||||
* HANDLE hMonitor;
|
||||
* } DUMMYUNIONNAME;
|
||||
* HANDLE hProcess;
|
||||
*/
|
||||
|
||||
public int cbSize = size();
|
||||
public int fMask;
|
||||
public HWND hwnd;
|
||||
public WString lpVerb;
|
||||
public WString lpFile;
|
||||
public WString lpParameters;
|
||||
public WString lpDirectory;
|
||||
public int nShow;
|
||||
public HINSTANCE hInstApp;
|
||||
public Pointer lpIDList;
|
||||
public WString lpClass;
|
||||
public HKEY hKeyClass;
|
||||
public int dwHotKey;
|
||||
|
||||
/*
|
||||
* Actually:
|
||||
* union {
|
||||
* HANDLE hIcon;
|
||||
* HANDLE hMonitor;
|
||||
* } DUMMYUNIONNAME;
|
||||
*/
|
||||
public HANDLE hMonitor;
|
||||
public HANDLE hProcess;
|
||||
|
||||
protected List getFieldOrder() {
|
||||
return Arrays.asList(new String[] {
|
||||
"cbSize", "fMask", "hwnd", "lpVerb", "lpFile", "lpParameters",
|
||||
"lpDirectory", "nShow", "hInstApp", "lpIDList", "lpClass",
|
||||
"hKeyClass", "dwHotKey", "hMonitor", "hProcess",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +1,12 @@
|
||||
package net.i2p.router;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.InetAddress;
|
||||
import java.net.Socket;
|
||||
import java.util.*;
|
||||
import java.util.logging.FileHandler;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.logging.SimpleFormatter;
|
||||
|
||||
import net.i2p.crypto.*;
|
||||
|
||||
@ -26,12 +31,29 @@ import static net.i2p.update.UpdateType.*;
|
||||
* router.pid - the pid of the java process.
|
||||
*/
|
||||
public class WinLauncher {
|
||||
static Logger logger = Logger.getLogger("launcherlog");
|
||||
static FileHandler fh;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
try {
|
||||
// This block configure the logger with handler and formatter
|
||||
fh = new FileHandler(logFile().toString());
|
||||
logger.addHandler(fh);
|
||||
SimpleFormatter formatter = new SimpleFormatter();
|
||||
fh.setFormatter(formatter);
|
||||
// the following statement is used to log any messages
|
||||
logger.info("My first log");
|
||||
} catch (SecurityException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
File programs = selectProgramFile();
|
||||
if (!programs.exists())
|
||||
programs.mkdirs();
|
||||
else if (!programs.isDirectory()) {
|
||||
System.err.println(programs + " exists but is not a directory. Please get it out of the way");
|
||||
logger.warning(programs + " exists but is not a directory. Please get it out of the way");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
@ -39,18 +61,23 @@ public class WinLauncher {
|
||||
if (!home.exists())
|
||||
home.mkdirs();
|
||||
else if (!home.isDirectory()) {
|
||||
System.err.println(home + " exists but is not a directory. Please get it out of the way");
|
||||
logger.warning(home + " exists but is not a directory. Please get it out of the way");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
if (i2pIsRunning()) {
|
||||
logger.warning("I2P is already running");
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
System.setProperty("i2p.dir.base", programs.getAbsolutePath());
|
||||
System.setProperty("i2p.dir.config", home.getAbsolutePath());
|
||||
System.setProperty("router.pid", String.valueOf(ProcessHandle.current().pid()));
|
||||
System.out.println("\t" + System.getProperty("i2p.dir.base") + "\n\t" + System.getProperty("i2p.dir.config")
|
||||
logger.info("\t" + System.getProperty("i2p.dir.base") + "\n\t" + System.getProperty("i2p.dir.config")
|
||||
+ "\n\t" + System.getProperty("router.pid"));
|
||||
|
||||
// wupp.i2pRouter = new Router(System.getProperties());
|
||||
System.out.println("Router is configured");
|
||||
logger.info("Router is configured");
|
||||
|
||||
Thread registrationThread = new Thread(REGISTER_UPP);
|
||||
registrationThread.setName("UPP Registration");
|
||||
@ -61,6 +88,29 @@ public class WinLauncher {
|
||||
RouterLaunch.main(args);
|
||||
}
|
||||
|
||||
private static boolean i2pIsRunning() {
|
||||
// check if there's something listening on port 7657
|
||||
// check for the existence of router.ping file, if it's less then 2 minutes old,
|
||||
// exit
|
||||
File home = selectHome();
|
||||
File ping = new File(home, "router.ping");
|
||||
if (ping.exists()) {
|
||||
long diff = System.currentTimeMillis() - ping.lastModified();
|
||||
if (diff < 2 * 60 * 1000) {
|
||||
logger.info("router.ping exists and is less than 2 minutes old, I2P appears to be running already.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
try {
|
||||
InetAddress localhost = InetAddress.getLocalHost();
|
||||
Socket s = new Socket(localhost, 7657);
|
||||
s.close();
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static final Runnable REGISTER_UPP = () -> {
|
||||
|
||||
// first wait for the RouterContext to appear
|
||||
@ -96,33 +146,60 @@ public class WinLauncher {
|
||||
}
|
||||
|
||||
private static File selectHome() { // throws Exception {
|
||||
String path_override = System.getenv("I2P_CONFIG");
|
||||
if (path_override != null) {
|
||||
File path = new File(path_override);
|
||||
if (path != null && path.exists()) {
|
||||
if (path.isDirectory())
|
||||
return path.getAbsoluteFile();
|
||||
else
|
||||
throw new RuntimeException("I2P_CONFIG is not a directory: " + path);
|
||||
}
|
||||
}
|
||||
if (SystemVersion.isWindows()) {
|
||||
File home = new File(System.getProperty("user.home"));
|
||||
File appData = new File(home, "AppData");
|
||||
File local = new File(appData, "Local");
|
||||
File i2p;
|
||||
i2p = new File(local, "I2P");
|
||||
System.out.println("Windows jpackage wrapper started, using: " + i2p + " as base config");
|
||||
logger.info("Windows jpackage wrapper started, using: " + i2p + " as base config");
|
||||
return i2p.getAbsoluteFile();
|
||||
} else {
|
||||
File jrehome = new File(System.getProperty("java.home"));
|
||||
File programs = new File(jrehome.getParentFile().getParentFile(), ".i2p");
|
||||
System.out.println("Linux portable jpackage wrapper started, using: " + programs + " as base config");
|
||||
logger.info("Linux portable jpackage wrapper started, using: " + programs + " as base config");
|
||||
return programs.getAbsoluteFile();
|
||||
}
|
||||
}
|
||||
|
||||
private static File selectProgramFile() {
|
||||
String path_override = System.getenv("I2P");
|
||||
if (path_override != null) {
|
||||
File path = new File(path_override);
|
||||
if (path.exists()) {
|
||||
if (path.isDirectory())
|
||||
return path.getAbsoluteFile();
|
||||
else
|
||||
throw new RuntimeException("I2P is not a directory: " + path);
|
||||
}
|
||||
}
|
||||
if (SystemVersion.isWindows()) {
|
||||
File jrehome = new File(System.getProperty("java.home"));
|
||||
File programs = jrehome.getParentFile();
|
||||
System.out.println("Windows portable jpackage wrapper found, using: " + programs + " as working config");
|
||||
logger.info("Windows portable jpackage wrapper found, using: " + programs + " as working config");
|
||||
return programs.getAbsoluteFile();
|
||||
} else {
|
||||
File jrehome = new File(System.getProperty("java.home"));
|
||||
File programs = new File(jrehome.getParentFile().getParentFile(), "i2p");
|
||||
System.out.println("Linux portable jpackage wrapper found, using: " + programs + " as working config");
|
||||
logger.info("Linux portable jpackage wrapper found, using: " + programs + " as working config");
|
||||
return programs.getAbsoluteFile();
|
||||
}
|
||||
}
|
||||
|
||||
private static File logFile() {
|
||||
File log = new File(selectProgramFile(), "log");
|
||||
if (!log.exists())
|
||||
log.mkdirs();
|
||||
return new File(log, "launcher.log");
|
||||
}
|
||||
}
|
||||
|
@ -11,11 +11,13 @@ class WinUpdateProcess implements Runnable {
|
||||
private final RouterContext ctx;
|
||||
private final Supplier<String> versionSupplier;
|
||||
private final Supplier<File> fileSupplier;
|
||||
private final Log _log;
|
||||
|
||||
WinUpdateProcess(RouterContext ctx, Supplier<String> versionSupplier, Supplier<File> fileSupplier) {
|
||||
this.ctx = ctx;
|
||||
this.versionSupplier = versionSupplier;
|
||||
this.fileSupplier = fileSupplier;
|
||||
this._log = ctx.logManager().getLog(WinUpdateProcess.class);
|
||||
}
|
||||
|
||||
private File workDir() throws IOException {
|
||||
@ -24,7 +26,7 @@ class WinUpdateProcess implements Runnable {
|
||||
if (workDir.exists()) {
|
||||
if (workDir.isFile())
|
||||
throw new IOException(workDir + " exists but is a file, get it out of the way");
|
||||
return null;
|
||||
return workDir;
|
||||
} else {
|
||||
workDir.mkdirs();
|
||||
}
|
||||
@ -42,20 +44,29 @@ class WinUpdateProcess implements Runnable {
|
||||
var workingDir = workDir();
|
||||
var logFile = new File(workingDir, "log-" + version + ".txt");
|
||||
|
||||
ProcessBuilder pb = new ProcessBuilder(file.getAbsolutePath());
|
||||
var env = pb.environment();
|
||||
env.put("OLD_I2P_VERSION", version);
|
||||
env.remove("RESTART_I2P");
|
||||
if (logFile.canWrite()) {
|
||||
// check if we can write to the log file. If we can, use the ProcessBuilder to
|
||||
// run the installer.
|
||||
ProcessBuilder pb = new ProcessBuilder(file.getAbsolutePath(), "/S", "/D=" + workingDir.getAbsolutePath());
|
||||
var env = pb.environment();
|
||||
env.put("OLD_I2P_VERSION", version);
|
||||
env.remove("RESTART_I2P");
|
||||
|
||||
int exitCode = ctx.router().scheduledGracefulExitCode();
|
||||
if (exitCode == Router.EXIT_HARD_RESTART || exitCode == Router.EXIT_GRACEFUL_RESTART)
|
||||
env.put("RESTART_I2P", "true");
|
||||
int exitCode = ctx.router().scheduledGracefulExitCode();
|
||||
if (exitCode == Router.EXIT_HARD_RESTART || exitCode == Router.EXIT_GRACEFUL_RESTART)
|
||||
env.put("RESTART_I2P", "true");
|
||||
|
||||
try {
|
||||
pb.directory(workingDir).redirectErrorStream(true).redirectOutput(logFile).start();
|
||||
} catch (IOException ex) {
|
||||
System.out.println("Unable to run update-program in background. Update will fail.");
|
||||
try {
|
||||
pb.directory(workingDir).redirectErrorStream(true).redirectOutput(logFile).start();
|
||||
} catch (IOException ex) {
|
||||
_log.error("Unable to run update-program in background. Update will fail.");
|
||||
}
|
||||
} else {
|
||||
// If we cant write to the log file and we're on Windows, use the elevator to
|
||||
// execute the installer instead of the ProcessBuilder.
|
||||
Elevator.executeAsAdministrator(file.getAbsolutePath(), " /S /D=" + workingDir.getAbsolutePath());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -63,7 +74,7 @@ class WinUpdateProcess implements Runnable {
|
||||
try {
|
||||
runUpdateInstaller();
|
||||
} catch (IOException ioe) {
|
||||
System.out.println("Error running updater, update may fail." + ioe);
|
||||
_log.error("Error running updater, update may fail." + ioe);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -43,28 +43,30 @@ public class WindowsUpdatePostProcessor implements UpdatePostProcessor {
|
||||
public void updateDownloadedandVerified(UpdateType type, int fileType, 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 (type != UpdateType.ROUTER_SIGNED_SU3 && type != UpdateType.ROUTER_DEV_SU3) {
|
||||
_log.warn("Unsupported update type " + type);
|
||||
return;
|
||||
}
|
||||
|
||||
if (fileType != SU3File.TYPE_EXE) {
|
||||
_log.warn("Unsupported file type " + fileType);
|
||||
return;
|
||||
}
|
||||
|
||||
this.positionedFile = moveUpdateInstaller(file);
|
||||
this.version = version;
|
||||
|
||||
if (!hook.compareAndSet(false, true)) {
|
||||
_log.info("shutdown hook was already set");
|
||||
return;
|
||||
}
|
||||
|
||||
_log.info("adding shutdown hook");
|
||||
|
||||
ctx.addFinalShutdownTask(new WinUpdateProcess(ctx, this::getVersion, this::getFile));
|
||||
}
|
||||
|
||||
if (fileType != SU3File.TYPE_EXE) {
|
||||
_log.warn("Unsupported file type " + fileType);
|
||||
return;
|
||||
}
|
||||
|
||||
this.positionedFile = moveUpdateInstaller(file);
|
||||
this.version = version;
|
||||
|
||||
if (!hook.compareAndSet(false, true)) {
|
||||
_log.info("shutdown hook was already set");
|
||||
return;
|
||||
}
|
||||
|
||||
_log.info("adding shutdown hook");
|
||||
ctx.addFinalShutdownTask(new WinUpdateProcess(ctx, this::getVersion, this::getFile));
|
||||
|
||||
}
|
||||
|
||||
private File moveUpdateInstaller(File file) throws IOException {
|
||||
|
@ -5,11 +5,38 @@ and they are distributed with this package in the "licenses" directory.
|
||||
1. MIT License
|
||||
* all original material in this repository
|
||||
2. Mozilla Public License 2.0(From Mozilla Installer)
|
||||
* ./i2pbrowser-mozcompat.nsi
|
||||
* ./src/win/i2pbrowser-mozcompat.nsi
|
||||
3. Modified BSD License(From Tor Browser Bundle)
|
||||
* ./firefox.profile.i2p/user.js
|
||||
* ./src/*/user.js
|
||||
4. GNU General Public License 2.0(NoScript and HTTPS Everywhere)
|
||||
* ./firefox.profile.i2p/extensions/
|
||||
* ./src/*/extensions/
|
||||
5. GNU General Public License 3.0(Part of HTTPS Everywhere)
|
||||
* ./firefox.profike.i2p/extensions/https-everywhere@eff.org.xpi
|
||||
* ./src/*/extensions/
|
||||
6. GNU GPLv2 With Classpath Exception(Java libraries included via Jpackage)
|
||||
* ./I2P
|
||||
|
||||
Additionally, the Jpackaged I2P Router contains software which is licensed
|
||||
under multiple Free/Open Source Software Licenses.
|
||||
|
||||
ABOUT-Jetty.html LICENSE-ECLIPSE-1.0.html
|
||||
LICENSE-Addressbook.txt LICENSE-ElGamalDSA.txt
|
||||
LICENSE-Apache2.0.txt LICENSE-FatCowIcons.txt
|
||||
LICENSE-BlockFile.txt LICENSE-Feather.txt
|
||||
LICENSE-Boost.txt LICENSE-fontawesome.txt
|
||||
LICENSE-BSD.txt LICENSE-forked-subprocess.swift.txt
|
||||
LICENSE-CC0-1.0-Universal.txt LICENSE-Foxtrot.txt
|
||||
LICENSE-Cryptix.txt LICENSE-FugueIcons.txt
|
||||
LICENSE-DesktopGUI.txt LICENSE-GPLv2.txt
|
||||
LICENSE-GPLv3.txt LICENSE-LGPLv2.1.txt
|
||||
LICENSE-Launch4j.txt LICENSE-SilkIcons.txt
|
||||
LICENSE-HashCash.txt LICENSE-LGPLv3.txt
|
||||
LICENSE-I2PTunnel.txt LICENSE-Ministreaming.txt
|
||||
LICENSE-Identicon.txt LICENSE-NDT.txt
|
||||
LICENSE-InstallCert.txt LICENSE-Noise.txt
|
||||
LICENSE-jBCrypt.txt LICENSE-sbt-wrapper.txt
|
||||
LICENSE-JGoodies-Forms.txt LICENSE-Scala.md
|
||||
LICENSE-JGoodies-Looks.txt LICENSE-SHA256.txt
|
||||
NOTICE-Tomcat.txt NOTICE-Jetty.html
|
||||
LICENSE-UPnP.txt LICENSE-SNTP.txt
|
||||
LICENSE-Wrapper.txt LICENSE-Undraw.txt
|
||||
LICENSE-XStream.txt NOTICE-Commons-Logging.txt
|
||||
|
@ -7,13 +7,25 @@ build/profile: build
|
||||
build/win:
|
||||
mkdir -p build/win/
|
||||
|
||||
build/win/i2pbrowser.bat:
|
||||
build/win/common.bat:
|
||||
cp src/win/common.bat build/win/common.bat
|
||||
|
||||
build/win/copy-config-profile.bat:
|
||||
cp src/win/copy-config-profile.bat build/win/copy-config-profile.bat
|
||||
|
||||
build/win/copy-profile.bat:
|
||||
cp src/win/launchi2p.bat build/win/copy-profile.bat
|
||||
|
||||
build/win/launchi2p.bat:
|
||||
cp src/win/launchi2p.bat build/win/launchi2p.bat
|
||||
|
||||
build/win/i2pbrowser.bat: build/win/common.bat build/win/copy-config-profile.bat build/win/copy-profile.bat build/win/launchi2p.bat
|
||||
cp src/win/i2pbrowser.bat build/win/i2pbrowser.bat
|
||||
|
||||
build/win/i2pconfig.bat:
|
||||
build/win/i2pconfig.bat: build/win/common.bat build/win/copy-config-profile.bat build/win/copy-profile.bat build/win/launchi2p.bat
|
||||
cp src/win/i2pconfig.bat build/win/i2pconfig.bat
|
||||
|
||||
build/win/i2pbrowser-private.bat:
|
||||
build/win/i2pbrowser-private.bat: build/win/common.bat build/win/copy-config-profile.bat build/win/copy-profile.bat build/win/launchi2p.bat
|
||||
cp src/win/i2pbrowser-private.bat build/win/i2pbrowser-private.bat
|
||||
|
||||
launchers: build/win build/win/i2pbrowser.bat build/win/i2pbrowser-private.bat build/win/i2pconfig.bat
|
||||
|
@ -11,7 +11,7 @@ prepupdate:
|
||||
|
||||
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" "$(I2P_VERSION)" $(SIGNER)
|
||||
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)
|
||||
|
||||
i2pwinupdate.su3.torrent: prepupdate su3
|
||||
mktorrent \
|
||||
@ -22,11 +22,11 @@ i2pwinupdate.su3.torrent: prepupdate su3
|
||||
|
||||
torrent: i2pwinupdate.su3.torrent
|
||||
|
||||
releases.json: torrent
|
||||
releases.json:
|
||||
@echo "[" | tee ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " {" | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " \"date\": \"$(I2P_DATE)\"," | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " \"version\": \"$(I2P_VERSION)\"," | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " \"version\": \"$(PROFILE_VERSION)\"," | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " \"minVersion\": \"1.5.0\"," | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " \"minJavaVersion\": \"1.8\"," | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " \"updates\": {" | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
|
7
release.sh
Executable file
7
release.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
|
||||
./unsigned.sh
|
||||
./sign.sh
|
45
sign.sh
Executable file
45
sign.sh
Executable file
@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
|
||||
. i2pversion
|
||||
|
||||
if [ -f i2pversion_override ]; then
|
||||
. i2pversion_override
|
||||
fi
|
||||
|
||||
. config.sh
|
||||
|
||||
if [ -f config_overide.sh ]; then
|
||||
. config_override.sh
|
||||
fi
|
||||
|
||||
linuxsign() {
|
||||
## LINUX SIGNING IS EXPERIMENTAL AND SHOULD NOT BE USED IN DEFAULT STATE.
|
||||
if [ ! -f jsign-4.1.jar ]; then
|
||||
wget -O jsign-4.1.jar https://github.com/ebourg/jsign/releases/download/4.1/jsign-4.1.jar
|
||||
fi
|
||||
if [ ! -f "$HOME/signingkeys/signing-key.jks" ]; then
|
||||
mkdir -p "$HOME/signingkeys/"
|
||||
keytool -genkey -alias server-alias -keyalg RSA -keypass changeit \
|
||||
-storepass changeit -keystore "$HOME/signingkeys/signing-key.jks"
|
||||
fi
|
||||
java -jar jsign-4.1.jar \
|
||||
--keystore "$HOME/signingkeys/signing-key.jks" \
|
||||
--storepass changeit \
|
||||
--keypass changeit \
|
||||
--tsaurl "http://timestamp.sectigo.com" \
|
||||
--name "I2P-Browser-Installer" \
|
||||
--alg "SHA-512" \
|
||||
"$1"
|
||||
}
|
||||
|
||||
if [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
|
||||
JAVA_HOME=`type -p java|xargs readlink -f|xargs dirname|xargs dirname`
|
||||
linuxsign I2P-Profile-Installer-$I2P_VERSION.exe
|
||||
cp "I2P-Profile-Installer-$I2P_VERSION.exe" "I2P-Profile-Installer-$I2P_VERSION-signed.exe"
|
||||
else
|
||||
signtool.exe sign "I2P-Profile-Installer-$I2P_VERSION.exe"
|
||||
cp "I2P-Profile-Installer-$I2P_VERSION.exe" "I2P-Profile-Installer-$I2P_VERSION-signed.exe"
|
||||
fi
|
@ -60,3 +60,4 @@ 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);
|
@ -1,19 +1,18 @@
|
||||
# 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.
|
||||
/*
|
||||
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:
|
||||
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
|
||||
/*
|
||||
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");
|
||||
@ -106,7 +105,7 @@ 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("browser.startup.homepage", "http://127.0.0.1:7657/home");
|
||||
|
||||
// Privacy-harden and disable irrelevant features.
|
||||
user_pref("app.normandy.api_url", "");
|
||||
@ -222,3 +221,4 @@ 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.display.use_system_colors", false);
|
@ -1 +1 @@
|
||||
1.07.2
|
||||
1.8.0
|
||||
|
@ -17,6 +17,7 @@ UniCode true
|
||||
var FFINSTEXE
|
||||
var FFNONTORINSTEXE
|
||||
var I2PINSTEXE
|
||||
Var PARENTOPTIONS
|
||||
|
||||
SetOverwrite on
|
||||
!define FFINSTEXE
|
||||
@ -27,22 +28,25 @@ SetOverwrite on
|
||||
!define I2PINSTEXE
|
||||
!define I2PINSTEXE32 "$PROGRAMFILES32\i2p"
|
||||
!define I2PINSTEXE64 "$PROGRAMFILES64\i2p"
|
||||
!define I2PINSTEXE_USERMODE "$LOCALAPPDATA\i2p"
|
||||
|
||||
|
||||
!define RAM_NEEDED_FOR_64BIT 0x80000000
|
||||
|
||||
InstallDir "$PROGRAMFILES64\${COMPANYNAME}\${APPNAME}"
|
||||
|
||||
# rtf or txt file - remember if it is txt, it must be in the DOS text format (\r\n)
|
||||
LicenseData "licenses\LICENSE.index"
|
||||
LicenseData "licenses\LICENSE.txt"
|
||||
# This will be in the installer/uninstaller's title bar
|
||||
Name "${COMPANYNAME} - ${APPNAME}"
|
||||
Icon ui2pbrowser_icon.ico
|
||||
OutFile "I2P-Profile-Installer-${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}.exe"
|
||||
|
||||
RequestExecutionLevel admin
|
||||
RequestExecutionLevel user
|
||||
|
||||
!include LogicLib.nsh
|
||||
!include x64.nsh
|
||||
!include FileFunc.nsh
|
||||
!define MUI_ICON ui2pbrowser_icon.ico
|
||||
!define MUI_FINISHPAGE
|
||||
!include "MUI2.nsh"
|
||||
@ -125,7 +129,8 @@ RequestExecutionLevel admin
|
||||
|
||||
PageEx license
|
||||
licensetext "${LICENSE_TITLE}"
|
||||
licensedata "licenses\LICENSE.index"
|
||||
licensedata "licenses\LICENSE.txt"
|
||||
#PageCallbacks elevatorCallback
|
||||
PageExEnd
|
||||
PageEx directory
|
||||
dirtext "${FIREFOX_MESSAGE}"
|
||||
@ -140,10 +145,22 @@ PageEx directory
|
||||
PageExEnd
|
||||
Page instfiles
|
||||
|
||||
|
||||
!include i2pbrowser-mozcompat.nsi
|
||||
|
||||
Function .onInit
|
||||
StrCpy $I2PINSTEXE "${I2PINSTEXE64}"
|
||||
UserInfo::GetAccountType
|
||||
pop $0
|
||||
${If} $0 != "admin"
|
||||
StrCpy $INSTDIR "$LOCALAPPDATA\${COMPANYNAME}\${APPNAME}"
|
||||
StrCpy $I2PINSTEXE "${I2PINSTEXE_USERMODE}"
|
||||
${EndIf}
|
||||
${If} ${FileExists} "${I2PINSTEXE32}\i2p.exe"
|
||||
StrCpy $I2PINSTEXE "${I2PINSTEXE32}"
|
||||
${EndIf}
|
||||
${If} ${FileExists} "${I2PINSTEXE64}\i2p.exe"
|
||||
StrCpy $I2PINSTEXE "${I2PINSTEXE64}"
|
||||
${EndIf}
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
Call ShouldInstall64Bit
|
||||
${If} $0 == 1
|
||||
@ -172,13 +189,7 @@ Function .onInit
|
||||
StrCpy $FFINSTEXE "$PROFILE\Desktop\Tor Browser\Browser\"
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
StrCpy $I2PINSTEXE "${I2PINSTEXE64}"
|
||||
${If} ${FileExists} "${I2PINSTEXE32}\i2p.exe"
|
||||
StrCpy $I2PINSTEXE "${I2PINSTEXE32}"
|
||||
${EndIf}
|
||||
${If} ${FileExists} "${I2PINSTEXE64}\i2p.exe"
|
||||
StrCpy $I2PINSTEXE "${I2PINSTEXE64}"
|
||||
${EndIf}
|
||||
# look for user installs
|
||||
FunctionEnd
|
||||
|
||||
Function firefoxDetect
|
||||
@ -205,10 +216,8 @@ Function routerDetect
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
|
||||
# start default section
|
||||
Section Install
|
||||
|
||||
${If} ${Silent}
|
||||
Function installerFunction
|
||||
${If} ${Silent}
|
||||
${Do}
|
||||
${FindProcess} "I2P.exe" $0
|
||||
Sleep 500
|
||||
@ -330,20 +339,38 @@ Section Install
|
||||
|
||||
# create a shortcut to the uninstaller
|
||||
CreateShortCut "$SMPROGRAMS\${APPNAME}\Uninstall-${APPNAME}.lnk" "$INSTDIR\uninstall-i2pbrowser.exe"
|
||||
FunctionEnd
|
||||
|
||||
Function elevatorCallback
|
||||
${GetOptions} $CMDLINE "/p" $PARENTOPTIONS
|
||||
${If} "${PARENTOPTIONS}" != ""
|
||||
StrCpy $PARENTOPTIONS "-ArgumentList '$PARENTOPTIONS'"
|
||||
${EndIf}
|
||||
${If} ${FileExists} "${I2PINSTEXE64}\i2p.exe"
|
||||
ExecShell open "powershell -Command Start-Process .\$EXEFILE -Wait -Verb RunAs $PARENTOPTIONS"
|
||||
#Quit
|
||||
${ElseIf} ${FileExists} "${I2PINSTEXE32}\i2p.exe"
|
||||
ExecShell open "powershell -Command Start-Process .\$EXEFILE -Wait -Verb RunAs $PARENTOPTIONS"
|
||||
#Quit
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
|
||||
|
||||
# start default section
|
||||
Section Install
|
||||
Call installerFunction
|
||||
SectionEnd
|
||||
|
||||
# uninstaller section start
|
||||
Section "uninstall"
|
||||
|
||||
# Remove the licenses
|
||||
rmDir /r "$INSTDIR\"
|
||||
|
||||
# Uninstall the launcher scripts
|
||||
Delete $INSTDIR\i2pbrowser.bat
|
||||
Delete $INSTDIR\i2pconfig.bat
|
||||
Delete $INSTDIR\i2pbrowser-private.bat
|
||||
Delete $INSTDIR\ui2pbrowser_icon.ico
|
||||
Delete $INSTDIR\*
|
||||
rmDir /r "$INSTDIR\"
|
||||
${If} ${FileExists} "$I2PINSTEXE\jpackaged"
|
||||
Delete $I2PINSTEXE\*
|
||||
rmDir /r "$I2PINSTEXE"
|
||||
${EndIf}
|
||||
|
||||
|
||||
# Remove shortcuts and folders
|
||||
Delete "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk"
|
||||
@ -354,15 +381,12 @@ Section "uninstall"
|
||||
Delete "$DESKTOP\Browse I2P.lnk"
|
||||
Delete "$DESKTOP\${APPNAME}.lnk"
|
||||
Delete "$DESKTOP\Private Browsing-${APPNAME}.lnk"
|
||||
rmDir "$SMPROGRAMS\${APPNAME}"
|
||||
rmDir "$INSTDIR\firefox.profile.i2p\extensions"
|
||||
rmDir "$INSTDIR\firefox.profile.i2p"
|
||||
rmDir "$LOCALAPPDATA\${APPNAME}"
|
||||
rmDir "$INSTDIR"
|
||||
rmDir /r "$SMPROGRAMS\${APPNAME}"
|
||||
rmDir /r "$INSTDIR\firefox.profile.i2p\extensions"
|
||||
rmDir /r "$INSTDIR\firefox.profile.i2p"
|
||||
rmDir /r "$LOCALAPPDATA\${APPNAME}"
|
||||
rmDir /r "$INSTDIR"
|
||||
|
||||
${If} ${FileExists} "$I2PINSTEXE\jpackaged"
|
||||
rmDir "$I2PINSTEXE"
|
||||
${EndIf}
|
||||
# delete the uninstaller
|
||||
Delete "$INSTDIR\uninstall-i2pbrowser.exe"
|
||||
|
||||
|
@ -1 +1 @@
|
||||
!define I2P_VERSION 1.7.0
|
||||
!define I2P_VERSION 1.8.0
|
||||
|
@ -1,3 +1,3 @@
|
||||
!define VERSIONMAJOR 1
|
||||
!define VERSIONMINOR 7
|
||||
!define VERSIONBUILD 4
|
||||
!define VERSIONMINOR 8
|
||||
!define VERSIONBUILD 0
|
||||
|
@ -58,6 +58,5 @@ 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("fission.autostart", true);
|
||||
user_pref("gfx.webrender.all", false);
|
||||
user_pref("privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts", false);
|
||||
user_pref("browser.privatebrowsing.autostart", false);
|
||||
user_pref("browser.display.use_system_colors", false);
|
@ -1,15 +1,18 @@
|
||||
//# 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.
|
||||
/*
|
||||
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:
|
||||
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
|
||||
/*
|
||||
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");
|
||||
@ -79,6 +82,9 @@ user_pref("extensions.torbutton.use_nontor_proxy", true);
|
||||
//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);
|
||||
@ -102,7 +108,7 @@ 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("browser.startup.homepage", "http://127.0.0.1:7657/home");
|
||||
|
||||
// Privacy-harden and disable irrelevant features.
|
||||
user_pref("app.normandy.api_url", "");
|
||||
@ -218,6 +224,5 @@ 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("fission.autostart", true);
|
||||
user_pref("gfx.webrender.all", false);
|
||||
user_pref("privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts", false);
|
||||
user_pref("browser.privatebrowsing.autostart", false);
|
||||
user_pref("browser.display.use_system_colors", false);
|
@ -1 +1 @@
|
||||
1.07.2
|
||||
1.8.0
|
||||
|
19
src/win/common.bat
Normal file
19
src/win/common.bat
Normal file
@ -0,0 +1,19 @@
|
||||
@echo off
|
||||
|
||||
SET MYPATH=%~dp0
|
||||
|
||||
set ProgramFiles64=%ProgramFiles: (x86)=%
|
||||
set I2PData="%LocalAppData%\I2P\"
|
||||
|
||||
set I2PPath="%ProgramFiles%\I2P\"
|
||||
if exist "%LocalAppData%\I2P\I2P.exe" (
|
||||
set I2PPath="%LocalAppData%\I2P\"
|
||||
)
|
||||
|
||||
if exist "%ProgramFiles64%\I2P\" (
|
||||
set I2PPath="%ProgramFiles64%\I2P\"
|
||||
)
|
||||
|
||||
if exist "%ProgramFiles(x86)%\I2P" (
|
||||
set I2PPath="%ProgramFiles(x86)%\I2P\"
|
||||
)
|
12
src/win/copy-config-profile.bat
Normal file
12
src/win/copy-config-profile.bat
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
SET MYPATH=%~dp0
|
||||
call "%MYPATH%common.bat"
|
||||
|
||||
if exist "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p\" (
|
||||
echo "profile is configured" & xcopy /s /i /y "%I2PData%I2PBrowser-Launcher\firefox.profile.config.i2p\extensions" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p\extensions"
|
||||
) else (
|
||||
echo "configuring profile" & xcopy /s /i /y "%I2PData%I2PBrowser-Launcher\firefox.profile.config.i2p" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p"
|
||||
)
|
||||
|
||||
xcopy /s /i /y "%I2PData%I2PBrowser-Launcher\firefox.profile.config.i2p\user.js" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p\user.js*"
|
||||
xcopy /s /i /y "%I2PData%I2PBrowser-Launcher\firefox.profile.config.i2p\prefs.js" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p\prefs.js*"
|
12
src/win/copy-profile.bat
Normal file
12
src/win/copy-profile.bat
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
SET MYPATH=%~dp0
|
||||
call "%MYPATH%common.bat"
|
||||
|
||||
if exist "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\" (
|
||||
echo "profile is configured, updating extensions" & xcopy /s /i /y "%I2PData%I2PBrowser-Launcher\firefox.profile.i2p\extensions" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\extensions"
|
||||
) else (
|
||||
echo "configuring profile" & xcopy /s /i /y "%I2PData%I2PBrowser-Launcher\firefox.profile.i2p" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p"
|
||||
)
|
||||
|
||||
xcopy /s /i /y "%I2PData%I2PBrowser-Launcher\firefox.profile.i2p\user.js" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\user.js*"
|
||||
xcopy /s /i /y "%I2PData%I2PBrowser-Launcher\firefox.profile.i2p\prefs.js" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\prefs.js*"
|
@ -1,34 +1,14 @@
|
||||
@echo on
|
||||
|
||||
set "I2PPath=%ProgramFiles%\I2P\"
|
||||
if exist "%ProgramFiles%\I2P\" (
|
||||
set "I2PPath=%ProgramFiles%\I2P\"
|
||||
)
|
||||
SET MYPATH=%~dp0
|
||||
call "%MYPATH%common.bat"
|
||||
|
||||
if exist "%ProgramFiles(x86)%\I2P" (
|
||||
set "I2PPath=%ProgramFiles(x86)%\I2P"
|
||||
)
|
||||
call "%MYPATH%launchi2p.bat"
|
||||
|
||||
netstat /o /a | find /i "listening" | find ":7657" >nul 2>nul && (
|
||||
echo I2P is already running
|
||||
) || (
|
||||
if exist "%ProgramFiles%\I2P\jpackaged" (
|
||||
start "i2p" /D "%LOCALAPPDATA%\I2P" "%I2PPath%\i2p.exe"
|
||||
) else (
|
||||
start "i2p" "%I2PPath%\i2p.exe"
|
||||
)
|
||||
)
|
||||
call "%MYPATH%copy-profile.bat"
|
||||
|
||||
timeout /t 3
|
||||
|
||||
if exist "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\" (
|
||||
echo "profile is configured, updating extensions"
|
||||
xcopy /s /i /y "%ProgramFiles%\I2P\I2PBrowser-Launcher\firefox.profile.i2p\extensions" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\extensions"
|
||||
) else (
|
||||
echo "configuring profile"
|
||||
xcopy /s /i /y "%ProgramFiles%\I2P\I2PBrowser-Launcher\firefox.profile.i2p" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p"
|
||||
)
|
||||
|
||||
if exist "%USERPROFILE%/Desktop/Tor Browser/Browser/firefox.exe" (
|
||||
start "i2pbrowser" "%USERPROFILE%/Desktop/Tor Browser/Browser/firefox.exe" -no-remote -profile "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p" -private-window about:blank
|
||||
exit
|
||||
|
@ -1,37 +1,14 @@
|
||||
@echo on
|
||||
|
||||
set "I2PPath=%ProgramFiles%\I2P\"
|
||||
if exist "%ProgramFiles%\I2P\" (
|
||||
set "I2PPath=%ProgramFiles%\I2P\"
|
||||
)
|
||||
|
||||
if exist "%ProgramFiles(x86)%\I2P" (
|
||||
set "I2PPath=%ProgramFiles(x86)%\I2P"
|
||||
)
|
||||
|
||||
netstat /o /a | find /i "listening" | find ":7657" >nul 2>nul && (
|
||||
echo I2P is already running
|
||||
) || (
|
||||
if exist "%ProgramFiles%\I2P\jpackaged" (
|
||||
start "i2p" /D "%LOCALAPPDATA%\I2P" "%I2PPath%\i2p.exe"
|
||||
) else (
|
||||
start "i2p" "%I2PPath%\i2p.exe"
|
||||
)
|
||||
)
|
||||
|
||||
SET MYPATH=%~dp0
|
||||
call "%MYPATH%common.bat"
|
||||
|
||||
call "%MYPATH%launchi2p.bat"
|
||||
|
||||
call "%MYPATH%copy-profile.bat"
|
||||
|
||||
timeout /t 3
|
||||
|
||||
if exist "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\" (
|
||||
echo "profile is configured, updating extensions"
|
||||
xcopy /s /i /y "%ProgramFiles%\I2P\I2PBrowser-Launcher\firefox.profile.i2p\extensions" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\extensions"
|
||||
) else (
|
||||
echo "configuring profile"
|
||||
xcopy /s /i /y "%ProgramFiles%\I2P\I2PBrowser-Launcher\firefox.profile.i2p" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p"
|
||||
)
|
||||
|
||||
if exist "%USERPROFILE%/Desktop/Tor Browser/Browser/firefox.exe" (
|
||||
start "i2pbrowser" "%USERPROFILE%/Desktop/Tor Browser/Browser/firefox.exe" -no-remote -profile "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p" -url %1
|
||||
exit
|
||||
|
@ -1,12 +1,9 @@
|
||||
@echo off
|
||||
|
||||
if exist "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p\" (
|
||||
echo "profile is configured"
|
||||
xcopy /s /i /y "%ProgramFiles%\I2P\I2PBrowser-Launcher\firefox.profile.i2p\extensions" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\extensions"
|
||||
) else (
|
||||
echo "configuring profile"
|
||||
xcopy /s /i /y "%ProgramFiles%\I2P\I2PBrowser-Launcher\firefox.profile.config.i2p" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p"
|
||||
)
|
||||
SET MYPATH=%~dp0
|
||||
call "%MYPATH%common.bat"
|
||||
|
||||
call "%MYPATH%copy-config-profile.bat"
|
||||
|
||||
if exist "%ProgramFiles%\Mozilla Firefox\firefox.exe" (
|
||||
start "i2pbrowser" "%ProgramFiles%\Mozilla Firefox\firefox.exe" -no-remote -profile "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p" -url %1
|
||||
|
17
src/win/launchi2p.bat
Normal file
17
src/win/launchi2p.bat
Normal file
@ -0,0 +1,17 @@
|
||||
@echo on
|
||||
|
||||
SET MYPATH=%~dp0
|
||||
call "%MYPATH%common.bat"
|
||||
|
||||
|
||||
echo "check if I2P is already running"
|
||||
::only launch I2P if the proxy is not up on 4444
|
||||
netstat /o /a /n | findstr "LISTENING" | findstr "7657" >nul 2>nul && (
|
||||
echo "I2P is already running, not launching"
|
||||
) || (
|
||||
echo "I2P is not running, launching"
|
||||
echo start "i2p" /D %I2PPath% i2p.exe
|
||||
start "i2p" /D %I2PPath% i2p.exe
|
||||
)
|
||||
|
||||
|
8
src/win/test.bat
Normal file
8
src/win/test.bat
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
SET MYPATH=%~dp0
|
||||
|
||||
call "%MYPATH%common.bat"
|
||||
|
||||
set TEST=TEST
|
||||
|
||||
echo testing: %TEST% path to me: %MYPATH% path to I2P %I2PPath%
|
11
unsigned.sh
Executable file
11
unsigned.sh
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
|
||||
./clean.sh
|
||||
wsl make distclean
|
||||
wsl make clean-extensions
|
||||
wsl make extensions
|
||||
./build.sh
|
||||
wsl make
|
Reference in New Issue
Block a user