Compare commits

...

120 Commits

Author SHA1 Message Date
idk
c7bea957cb eliminate extra quote from launchi2p.bat 2022-06-06 00:23:47 -04:00
idk
e246159285 update router version 2022-05-23 16:48:11 -04:00
idk
a7c5151b56 make i2pIsRunning behavior consistent for both tests 2022-05-20 18:46:34 -04:00
idk
23ae110698 move i2pIsRunning further up in launcher 2022-05-20 18:44:39 -04:00
idk
46ef089acc check for router.ping to determine if there's another I2P running 2022-05-20 18:42:35 -04:00
idk
235b6444e7 check for 7657 instead of 4444 in launcher script 2022-05-20 18:21:49 -04:00
idk
d5b1291a30 \licenses\license\ 2022-05-20 13:11:45 -04:00
idk
f7fa344ea8 \is\are" 2022-05-20 13:02:30 -04:00
idk
698befcdda fix columns in license.index 2022-05-20 13:00:07 -04:00
idk
c9747734dc document license generation/display 2022-05-20 12:56:59 -04:00
idk
b4261675b0 change license generation/display 2022-05-20 12:53:42 -04:00
idk
b2b3ba75fb don't pull tags or checkout version since we're checking out the tags in one step 2022-05-19 20:42:03 -04:00
idk
8257ee6625 always change back to the source directory when running a new script 2022-05-19 19:50:31 -04:00
idk
e23db67782 fix mode of unsigned.sh 2022-05-19 19:36:57 -04:00
idk
ff733907c0 re-upload if we re-run daily 2022-05-18 22:51:32 -04:00
idk
a09da35170 re-upload if we re-run daily 2022-05-18 22:30:29 -04:00
idk
af5add3143 fix jpackage version in nsis installer 2022-05-18 21:32:42 -04:00
idk
0f5eb563eb make jpackage 2022-05-18 21:30:45 -04:00
idk
53dd311b58 clean before running daily.sh 2022-05-18 21:28:02 -04:00
idk
6fc7d9a7b4 clean before running daily.sh 2022-05-18 21:26:33 -04:00
idk
d283efdbf5 fix missing .sh on instructions in daily.sh 2022-05-18 21:25:27 -04:00
idk
de56966a51 fix date 2022-05-18 21:19:58 -04:00
idk
9b7f886e96 re-add nsi file 2022-05-18 21:17:26 -04:00
idk
ec94eee4e2 experiment with daily uploads 2022-05-18 21:16:27 -04:00
idk
17d3b9161f experiment with daily uploads 2022-05-18 21:11:11 -04:00
idk
b8d1a48961 experiment with daily uploads 2022-05-18 20:50:38 -04:00
idk
597207b425 experiment with daily uploads 2022-05-18 20:50:06 -04:00
idk
d851dec3c4 experiment with daily uploads 2022-05-18 19:48:42 -04:00
idk
1339df4ea6 conditionally include .version 2022-05-18 18:26:46 -04:00
idk
02ed695417 i2pversion or i2pversion_overrides automatically sets version no matter what 2022-05-18 18:19:06 -04:00
idk
0c0219c308 i2pversion or i2pversion_overrides automatically sets version no matter what 2022-05-18 18:17:26 -04:00
idk
d47a6c1234 fix unchecked-in copy change 2022-05-18 18:12:41 -04:00
idk
cc5f3052fa fix launch message 2022-05-18 18:07:52 -04:00
idk
c10cf6aaeb use netstat oan and findstr in router up check because it's magnitudes faster 2022-05-18 18:06:12 -04:00
idk
17f2c8bdae actually, do set the working directory to the exe path because it achieves the identical result and matches the i2p.i2p desktop shortcut behavior 2022-05-18 17:50:32 -04:00
idk
7627dd9742 Don't set working directory in start command so it can just have one 2022-05-18 17:44:53 -04:00
idk
d4f14fdae9 Don't set working directory in start command so it can just have one 2022-05-18 17:43:16 -04:00
idk
1e18aa8c0d Apparently *that* is how you suppress the copy-as-file notification from xcopy. 2022-05-18 17:16:25 -04:00
idk
88ba9dc96e more batch quoting madness 2022-05-18 17:09:10 -04:00
idk
3fda252a34 more batch quoting madness 2022-05-18 17:06:56 -04:00
idk
dbc8376ebd more batch quoting madness 2022-05-18 16:55:29 -04:00
idk
ed53efea8f more batch quoting madness 2022-05-18 16:51:21 -04:00
idk
a4d9d17306 more batch quoting madness 2022-05-18 16:48:57 -04:00
idk
42b2e78bbe don't echo in common.bat 2022-05-18 16:35:22 -04:00
idk
7fb9fd4e8d Cleanup quoting in common.bat 2022-05-18 16:28:39 -04:00
idk
6ca76277db Execute if statement outcomes on one line because batch. 2022-05-18 16:18:43 -04:00
idk
983813caaf Execute if statement outcomes on one line because batch. 2022-05-18 16:14:03 -04:00
idk
5d9cd3b669 Execute if statement outcomes on one line because batch. 2022-05-18 16:12:09 -04:00
idk
45a358bba4 Execute if statement outcomes on one line because batch. 2022-05-18 16:09:13 -04:00
idk
1b2985665a Execute if statement outcomes on one line because batch. 2022-05-18 15:59:04 -04:00
idk
a40a212774 Always get profile from data directory 2022-05-18 15:14:15 -04:00
idk
78e703fd92 enclose conditionals in copy-profile scripts to allow multi-line statements within them? Batch is weird 2022-05-18 15:10:49 -04:00
idk
7f2ef1d074 quote call statements in launcher scripts 2022-05-18 14:44:19 -04:00
idk
c2b2624388 delete wrapper script, won't need it 2022-05-18 14:26:01 -04:00
idk
c5dda34ef2 delete wrapper script, won't need it 2022-05-18 14:25:34 -04:00
idk
8c507478b6 delete wrapper script, won't need it 2022-05-18 14:16:41 -04:00
idk
574321a1ee fix path detection when NSIS overrides Windows Environment Variables 2022-05-18 14:06:05 -04:00
idk
28ad8fcb61 disable elevator callback 2022-05-18 13:43:47 -04:00
idk
af3e1696b8 detect admin installs even when installing in adminless mode 2022-05-18 12:35:55 -04:00
idk
ca4bf67e19 no one:
NSIS: a dozen different ways to store or reference a value, none of which have consistent behavior or semantics.
2022-05-18 12:05:18 -04:00
idk
451e5d0494 use a callback to elevate earlier in the process 2022-05-18 11:46:06 -04:00
idk
ea8788e1c8 Don't pass an ArgumentList unless an ArgumentList exists 2022-05-18 11:30:48 -04:00
idk
fa05c5f1cc More powershell elevator refinements 2022-05-18 11:13:28 -04:00
idk
3ab6464c54 Add script to build unsigned exes automatically before releases 2022-05-18 01:08:44 -04:00
idk
0d29cd2bff Simplify runas commands 2022-05-18 01:06:24 -04:00
idk
cf4017f212 Elevator has to use powershell 2022-05-17 18:31:44 -04:00
idk
10ca0ec281 Update exe signing procedure 2022-05-17 18:02:03 -04:00
idk
288007d6dd Update exe signing procedure 2022-05-17 17:49:33 -04:00
idk
0e7b25ad2c Update release procedure 2022-05-17 17:27:06 -04:00
idk
27082b713e Update exe signing procedure 2022-05-17 17:26:04 -04:00
idk
e16c7bca76 Update su3 signing procedure 2022-05-17 17:25:31 -04:00
idk
85fb43ca57 Update su3 signing procedure 2022-05-17 17:20:15 -04:00
idk
7a3598817d Update su3 signing procedure 2022-05-17 17:18:12 -04:00
idk
8e95435be0 fix missing variable 2022-05-17 17:12:26 -04:00
idk
9aba119a49 Also attempt to do it without the wrapper 2022-05-17 16:52:22 -04:00
idk
cf091c9e10 Don't launch I2P if it's already running 2022-05-17 16:43:41 -04:00
idk
1cbd3f6553 specify user:administrator to runas 2022-05-17 16:38:18 -04:00
idk
467512bd26 update version 2022-05-17 16:14:39 -04:00
idk
af9c2460e9 use jsign 2022-05-17 16:12:43 -04:00
idk
6ffd0dae9a bump the version, use an updated JNA_VERSION 2022-05-17 15:12:39 -04:00
idk
fb28051ba2 Minify phases of wrapper launcher 2022-05-17 14:30:23 -04:00
idk
8f19517167 Minify phases of wrapper launcher 2022-05-17 14:23:49 -04:00
idk
e55c57c6f8 add a wrapper to launch installer as correct user 2022-05-17 13:56:45 -04:00
idk
e722cb4bec add a wrapper to launch installer as correct user 2022-05-17 13:51:03 -04:00
idk
963d7e88b4 update examples in config.sh 2022-05-10 20:12:23 -04:00
idk
59baf37322 don't clean in build.sh 2022-05-10 19:26:06 -04:00
idk
b949fa8a84 show path and java home in build process 2022-05-10 19:14:05 -04:00
idk
12b762d595 set path and java home in config.sh 2022-05-10 19:12:25 -04:00
idk
aa2ab5bbe5 try adding ALL-UNNAMED to properties 2022-05-10 18:25:10 -04:00
idk
e3f42a42bd log launcher into a file before router starts, launcher.log. Get rid of system.out logging. 2022-05-10 18:11:45 -04:00
idk
3da8f56247 log launcher into a file before router starts, launcher.log. Get rid of system.out logging. 2022-05-10 18:00:21 -04:00
idk
31c60f74e1 log launcher into a file before router starts, launcher.log. Get rid of system.out logging. 2022-05-10 17:49:40 -04:00
idk
cd790ecae8 bump version 2022-05-08 22:31:34 -04:00
idk
cfbeae0ecb fix config file copy which was cleared by build 2022-05-08 22:27:33 -04:00
idk
b87e701ee0 fix config file copy which was cleared by build 2022-05-08 22:12:28 -04:00
idk
f8c84ba50a add some crude logging and a signtool example to the readme. 2022-05-08 20:24:33 -04:00
idk
5d3615a0c6 Update changelog 2022-05-08 19:39:44 -04:00
idk
ec98865d33 call common.bat on every script that requires variables set in that script 2022-05-08 13:06:18 -04:00
idk
978af1cb11 move more scripted prerequisites to separate files 2022-05-08 13:02:59 -04:00
idk
560f1c707a update version, get rid of profile version 2022-05-05 18:20:54 -04:00
idk
e29fdd95a1 run make clean in clean.sh 2022-05-05 18:18:20 -04:00
idk
39e1df1b10 update the changelog 2022-05-05 18:14:08 -04:00
idk
93b6bc4b3e bump version for a release, pull tags during build 2022-05-05 18:09:35 -04:00
idk
334e6525b1 bump version 2022-05-05 18:02:36 -04:00
idk
46c6fb77e2 Devise a way to test I2P router detection priorities more easily #17 2022-05-05 17:01:01 -04:00
idk
9305301bf5 Fix I2P router detection priorities in Windows launcher scripts #17 2022-05-05 16:21:20 -04:00
idk
d874204add Merge branch 'master' of i2pgit.org:i2p-hackers/i2p.firefox 2022-04-20 17:12:25 -04:00
idk
aadf287ecd Document how to switch JVM's in config file 2022-04-20 17:06:20 -04:00
idk
66864c317d Merge branch 'settable-paths' into 'master'
Enable updating to/from non `%ProgramFiles%` locations

Closes #13

See merge request i2p-hackers/i2p.firefox!6
2022-04-20 20:22:26 +00:00
idk
ae02a1c6db Document how to switch JVM's in config file 2022-04-20 16:17:58 -04:00
idk
b711a36c1d Document how to switch JVM's in config file 2022-04-20 16:11:05 -04:00
idk
115805b9fb Make config.sh point to 17.0.3 2022-04-20 15:53:00 -04:00
idk
c426b73d79 Merge branch 'master' into 'settable-paths'
# Conflicts:
#   src/nsis/i2pbrowser-version.nsi
2022-04-20 18:54:51 +00:00
idk
a20b8ff46d Affix version 2022-04-20 14:51:58 -04:00
idk
c14287048f add a config.sh file to configure JVM/JDK at build time 2022-04-20 14:09:40 -04:00
idk
9be28a53fd add GPL+Classpath license and EPL license to bundle 2022-04-20 11:05:27 -04:00
idk
14fdca2e1d update to i2p-jpackage-1.7.1 2022-04-20 09:05:19 -04:00
idk
e74405073a update to i2p-jpackage-1.7.1 2022-04-20 09:03:00 -04:00
idk
a05f3777a7 Merge branch 'master' into 'settable-paths'
# Conflicts:
#   src/nsis/i2pbrowser-version.nsi
2022-04-08 14:29:34 +00:00
idk
b8b7a1d21c bump number to build 2022-02-24 00:28:32 -05:00
32 changed files with 992 additions and 190 deletions

10
.gitignore vendored
View File

@ -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

View File

@ -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: build/licenses
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"
@ -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:

View File

@ -59,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
------------
@ -209,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
--------------
@ -266,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

View File

@ -10,6 +10,12 @@ if [ -f i2pversion_override ]; then
. i2pversion_override
fi
. config.sh
if [ -f config_overide.sh ]; then
. config_override.sh
fi
COUNT="Ten Nine Eight Seven Six Five Four Three Two One"
JAVA=$(java --version | tr -d 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\n' | cut -d ' ' -f 2 | cut -d '.' -f 1 | tr -d '\n\t\- ')
@ -21,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
@ -48,9 +53,8 @@ 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"
@ -87,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

View File

@ -1,3 +1,16 @@
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

View File

@ -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

50
config.sh Executable file
View File

@ -0,0 +1,50 @@
## 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"
# to use it for Oracle OpenJDK17
## Other potential values(NOT exhaustive):
#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.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)
# Which will determine, of course, which java compilers you use and where
# your JAVA_HOME(and thus your bootclasspath jars and stuff) come from.
# So for you reddit nerds who are all into graalVM or whatever, this might
# be where you go to mess with that.
## Until 1.7.4, releases were built using Eclipse Adoptium OpenJDK
# but it lags behind a day or two in security updates which did become
# a major issue in April 2022. At this point it was migrated to Oracle's
# JDK distribution which was more up to date. Should you prefer, or simply
# wish to experiment with a different JVM, copy this file to `config_overrides.sh`
# and add your JAVA_HOME and $PATH changes.
# You can also use this to temporarily add applications into the PATH that are
# 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/"
# 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
View 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"

View File

@ -1,17 +1,20 @@
#! /usr/bin/env sh
JNA_VERSION=5.10.0
export JNA_VERSION=5.10.0
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.0
export I2P_VERSION=1.7.0
VERSION=i2p-"$I2P_VERSION"
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"

View File

@ -4,6 +4,9 @@ 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.*;
@ -28,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);
}
@ -41,24 +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"));
// do a quick check to see of port 7657 is already occupied
if (i2pIsRunning()) {
System.err.println("I2P is already running");
System.exit(0);
}
// 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");
@ -71,6 +90,17 @@ public class WinLauncher {
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);
@ -132,12 +162,12 @@ public class WinLauncher {
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();
}
}
@ -156,13 +186,20 @@ public class WinLauncher {
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");
}
}

View File

@ -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();
}
@ -57,7 +59,7 @@ class WinUpdateProcess implements Runnable {
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.");
_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
@ -72,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);
}
}
}

88
license/EPL.txt Normal file
View File

@ -0,0 +1,88 @@
Eclipse Public License - v 2.0
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
1. DEFINITIONS
“Contribution” means:
a) in the case of the initial Contributor, the initial content Distributed under this Agreement, and
b) in the case of each subsequent Contributor:
i) changes to the Program, and
ii) additions to the Program;
where such changes and/or additions to the Program originate from and are Distributed by that particular Contributor. A Contribution “originates” from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include changes or additions to the Program that are not Modified Works.
“Contributor” means any person or entity that Distributes the Program.
“Licensed Patents” mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
“Program” means the Contributions Distributed in accordance with this Agreement.
“Recipient” means anyone who receives the Program under this Agreement or any Secondary License (as applicable), including Contributors.
“Derivative Works” shall mean any work, whether in Source Code or other form, that is based on (or derived from) the Program and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship.
“Modified Works” shall mean any work in Source Code or other form that results from an addition to, deletion from, or modification of the contents of the Program, including, for purposes of clarity any new file in Source Code form that contains any contents of the Program. Modified Works shall not include works that contain only declarations, interfaces, types, classes, structures, or files of the Program solely in each case in order to link to, bind by name, or subclass the Program or Modified Works thereof.
“Distribute” means the acts of a) distributing or b) making available in any manner that enables the transfer of a copy.
“Source Code” means the form of a Program preferred for making modifications, including but not limited to software source code, documentation source, and configuration files.
“Secondary License” means either the GNU General Public License, Version 2.0, or any later versions of that license, including any exceptions or additional permissions as identified by the initial Contributor.
2. GRANT OF RIGHTS
a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, Distribute and sublicense the Contribution of such Contributor, if any, and such Derivative Works.
b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in Source Code or other form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to Distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
e) Notwithstanding the terms of any Secondary License, no Contributor makes additional grants to any Recipient (other than those set forth in this Agreement) as a result of such Recipient's receipt of the Program under the terms of a Secondary License (if permitted under the terms of Section 3).
3. REQUIREMENTS
3.1 If a Contributor Distributes the Program in any form, then:
a) the Program must also be made available as Source Code, in accordance with section 3.2, and the Contributor must accompany the Program with a statement that the Source Code for the Program is available under this Agreement, and informs Recipients how to obtain it in a reasonable manner on or through a medium customarily used for software exchange; and
b) the Contributor may Distribute the Program under a license different than this Agreement, provided that such license:
i) effectively disclaims on behalf of all other Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
ii) effectively excludes on behalf of all other Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
iii) does not attempt to limit or alter the recipients' rights in the Source Code under section 3.2; and
iv) requires any subsequent distribution of the Program by any party to be under a license that satisfies the requirements of this section 3.
3.2 When the Program is Distributed as Source Code:
a) it must be made available under this Agreement, or if the Program (i) is combined with other material in a separate file or files made available under a Secondary License, and (ii) the initial Contributor attached to the Source Code the notice described in Exhibit A of this Agreement, then the Program may be made available under the terms of such Secondary Licenses, and
b) a copy of this Agreement must be included with each copy of the Program.
3.3 Contributors may not remove or alter any copyright, patent, trademark, attribution notices, disclaimers of warranty, or limitations of liability (notices) contained within the Program from any copy of the Program which they Distribute, provided that Contributors may add their own appropriate notices.
4. COMMERCIAL DISTRIBUTION
Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (“Commercial Contributor”) hereby agrees to defend and indemnify every other Contributor (“Indemnified Contributor”) against any losses, damages and costs (collectively “Losses”) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
5. NO WARRANTY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
6. DISCLAIMER OF LIABILITY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. GENERAL
If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be Distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to Distribute the Program (including its Contributions) under the new version.
Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. Nothing in this Agreement is intended to be enforceable by any entity that is not a Contributor or Recipient. No third-party beneficiary rights are created under this Agreement.
Exhibit A Form of Secondary Licenses Notice
“This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), version(s), and exceptions or additional permissions here}.”
Simply including a copy of this Agreement, including this Exhibit A is not sufficient to license the Source Code under Secondary Licenses.
If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice.
You may add additional accurate notices of copyright ownership.

393
license/GPL+CLASSPATH.txt Normal file
View File

@ -0,0 +1,393 @@
GNU General Public License, version 2,
with the Classpath Exception
The GNU General Public License (GPL)
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom to share
and change it. By contrast, the GNU General Public License is intended to
guarantee your freedom to share and change free software--to make sure the
software is free for all its users. This General Public License applies to
most of the Free Software Foundation's software and to any other program whose
authors commit to using it. (Some other Free Software Foundation software is
covered by the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not price. Our
General Public Licenses are designed to make sure that you have the freedom to
distribute copies of free software (and charge for this service if you wish),
that you receive source code or can get it if you want it, that you can change
the software or use pieces of it in new free programs; and that you know you
can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny
you these rights or to ask you to surrender the rights. These restrictions
translate to certain responsibilities for you if you distribute copies of the
software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for
a fee, you must give the recipients all the rights that you have. You must
make sure that they, too, receive or can get the source code. And you must
show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2)
offer you this license which gives you legal permission to copy, distribute
and/or modify the software.
Also, for each author's protection and ours, we want to make certain that
everyone understands that there is no warranty for this free software. If the
software is modified by someone else and passed on, we want its recipients to
know that what they have is not the original, so that any problems introduced
by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We
wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program proprietary.
To prevent this, we have made it clear that any patent must be licensed for
everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification
follow.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains a notice
placed by the copyright holder saying it may be distributed under the terms of
this General Public License. The "Program", below, refers to any such program
or work, and a "work based on the Program" means either the Program or any
derivative work under copyright law: that is to say, a work containing the
Program or a portion of it, either verbatim or with modifications and/or
translated into another language. (Hereinafter, translation is included
without limitation in the term "modification".) Each licensee is addressed as
"you".
Activities other than copying, distribution and modification are not covered by
this License; they are outside its scope. The act of running the Program is
not restricted, and the output from the Program is covered only if its contents
constitute a work based on the Program (independent of having been made by
running the Program). Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's source code as
you receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice and
disclaimer of warranty; keep intact all the notices that refer to this License
and to the absence of any warranty; and give any other recipients of the
Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may
at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion of it, thus
forming a work based on the Program, and copy and distribute such modifications
or work under the terms of Section 1 above, provided that you also meet all of
these conditions:
a) You must cause the modified files to carry prominent notices stating
that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in whole or
in part contains or is derived from the Program or any part thereof, to be
licensed as a whole at no charge to all third parties under the terms of
this License.
c) If the modified program normally reads commands interactively when run,
you must cause it, when started running for such interactive use in the
most ordinary way, to print or display an announcement including an
appropriate copyright notice and a notice that there is no warranty (or
else, saying that you provide a warranty) and that users may redistribute
the program under these conditions, and telling the user how to view a copy
of this License. (Exception: if the Program itself is interactive but does
not normally print such an announcement, your work based on the Program is
not required to print an announcement.)
These requirements apply to the modified work as a whole. If identifiable
sections of that work are not derived from the Program, and can be reasonably
considered independent and separate works in themselves, then this License, and
its terms, do not apply to those sections when you distribute them as separate
works. But when you distribute the same sections as part of a whole which is a
work based on the Program, the distribution of the whole must be on the terms
of this License, whose permissions for other licensees extend to the entire
whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your
rights to work written entirely by you; rather, the intent is to exercise the
right to control the distribution of derivative or collective works based on
the Program.
In addition, mere aggregation of another work not based on the Program with the
Program (or with a work based on the Program) on a volume of a storage or
distribution medium does not bring the other work under the scope of this
License.
3. You may copy and distribute the Program (or a work based on it, under
Section 2) in object code or executable form under the terms of Sections 1 and
2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable source
code, which must be distributed under the terms of Sections 1 and 2 above
on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three years, to
give any third party, for a charge no more than your cost of physically
performing source distribution, a complete machine-readable copy of the
corresponding source code, to be distributed under the terms of Sections 1
and 2 above on a medium customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer to
distribute corresponding source code. (This alternative is allowed only
for noncommercial distribution and only if you received the program in
object code or executable form with such an offer, in accord with
Subsection b above.)
The source code for a work means the preferred form of the work for making
modifications to it. For an executable work, complete source code means all
the source code for all modules it contains, plus any associated interface
definition files, plus the scripts used to control compilation and installation
of the executable. However, as a special exception, the source code
distributed need not include anything that is normally distributed (in either
source or binary form) with the major components (compiler, kernel, and so on)
of the operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the source
code from the same place counts as distribution of the source code, even though
third parties are not compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program except as
expressly provided under this License. Any attempt otherwise to copy, modify,
sublicense or distribute the Program is void, and will automatically terminate
your rights under this License. However, parties who have received copies, or
rights, from you under this License will not have their licenses terminated so
long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not signed it.
However, nothing else grants you permission to modify or distribute the Program
or its derivative works. These actions are prohibited by law if you do not
accept this License. Therefore, by modifying or distributing the Program (or
any work based on the Program), you indicate your acceptance of this License to
do so, and all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the Program),
the recipient automatically receives a license from the original licensor to
copy, distribute or modify the Program subject to these terms and conditions.
You may not impose any further restrictions on the recipients' exercise of the
rights granted herein. You are not responsible for enforcing compliance by
third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues), conditions
are imposed on you (whether by court order, agreement or otherwise) that
contradict the conditions of this License, they do not excuse you from the
conditions of this License. If you cannot distribute so as to satisfy
simultaneously your obligations under this License and any other pertinent
obligations, then as a consequence you may not distribute the Program at all.
For example, if a patent license would not permit royalty-free redistribution
of the Program by all those who receive copies directly or indirectly through
you, then the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply and
the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or
other property right claims or to contest validity of any such claims; this
section has the sole purpose of protecting the integrity of the free software
distribution system, which is implemented by public license practices. Many
people have made generous contributions to the wide range of software
distributed through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing to
distribute software through any other system and a licensee cannot impose that
choice.
This section is intended to make thoroughly clear what is believed to be a
consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain
countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Program under this License may add an explicit
geographical distribution limitation excluding those countries, so that
distribution is permitted only in or among countries not thus excluded. In
such case, this License incorporates the limitation as if written in the body
of this License.
9. The Free Software Foundation may publish revised and/or new versions of the
General Public License from time to time. Such new versions will be similar in
spirit to the present version, but may differ in detail to address new problems
or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any later
version", you have the option of following the terms and conditions either of
that version or of any later version published by the Free Software Foundation.
If the Program does not specify a version number of this License, you may
choose any version ever published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free programs
whose distribution conditions are different, write to the author to ask for
permission. For software which is copyrighted by the Free Software Foundation,
write to the Free Software Foundation; we sometimes make exceptions for this.
Our decision will be guided by the two goals of preserving the free status of
all derivatives of our free software and of promoting the sharing and reuse of
software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible
use to the public, the best way to achieve this is to make it free software
which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach
them to the start of each source file to most effectively convey the exclusion
of warranty; and each file should have at least the "copyright" line and a
pointer to where the full notice is found.
One line to give the program's name and a brief idea of what it does.
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc., 59
Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it
starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free
software, and you are welcome to redistribute it under certain conditions;
type 'show c' for details.
The hypothetical commands 'show w' and 'show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may be
called something other than 'show w' and 'show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your school,
if any, to sign a "copyright disclaimer" for the program, if necessary. Here
is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
'Gnomovision' (which makes passes at compilers) written by James Hacker.
signature of Ty Coon, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General Public
License instead of this License.
"CLASSPATH" EXCEPTION TO THE GPL
Certain source files distributed by Oracle America and/or its affiliates are
subject to the following clarification and special exception to the GPL, but
only where Oracle has expressly included in the particular source file's header
the words "Oracle designates this particular file as subject to the "Classpath"
exception as provided by Oracle in the LICENSE file that accompanied this code."
Linking this library statically or dynamically with other modules is making
a combined work based on this library. Thus, the terms and conditions of
the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent modules,
and to copy and distribute the resulting executable under terms of your
choice, provided that you also meet, for each linked independent module,
the terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library. If
you modify this library, you may extend this exception to your version of
the library, but you are not obligated to do so. If you do not wish to do
so, delete this exception statement from your version.
ADDITIONAL INFORMATION ABOUT LICENSING
Certain files distributed by Oracle America, Inc. and/or its affiliates are
subject to the following clarification and special exception to the GPLv2,
based on the GNU Project exception for its Classpath libraries, known as the
GNU Classpath Exception.
Note that Oracle includes multiple, independent programs in this software
package. Some of those programs are provided under licenses deemed
incompatible with the GPLv2 by the Free Software Foundation and others.
For example, the package includes programs licensed under the Apache
License, Version 2.0 and may include FreeType. Such programs are licensed
to you under their original licenses.
Oracle facilitates your further distribution of this package by adding the
Classpath Exception to the necessary parts of its GPLv2 code, which permits
you to use that code in combination with other independent modules not
licensed under the GPLv2. However, note that this would not permit you to
commingle code under an incompatible license with Oracle's GPLv2 licensed
code by, for example, cutting and pasting such code into a file also
containing Oracle's GPLv2 licensed code and then distributing the result.
Additionally, if you were to remove the Classpath Exception from any of the
files to which it applies and distribute the result, you would likely be
required to license some or all of the other code in that distribution under
the GPLv2 as well, and since the GPLv2 is incompatible with the license terms
of some items included in the distribution by Oracle, removing the Classpath
Exception could therefore effectively compromise your ability to further
distribute the package.
Failing to distribute notices associated with some files may also create
unexpected legal consequences.
Proceed with caution and we recommend that you obtain the advice of a lawyer
skilled in open source matters before removing the Classpath Exception or
making modifications to this package which may subsequently be redistributed
and/or involve the use of third party software.

View File

@ -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

View File

@ -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

View File

@ -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
View 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
View 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

View File

@ -1 +1 @@
1.07.1
1.8.0

View File

@ -17,6 +17,7 @@ UniCode true
var FFINSTEXE
var FFNONTORINSTEXE
var I2PINSTEXE
Var PARENTOPTIONS
SetOverwrite on
!define FFINSTEXE
@ -35,7 +36,7 @@ SetOverwrite on
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
@ -45,6 +46,7 @@ RequestExecutionLevel user
!include LogicLib.nsh
!include x64.nsh
!include FileFunc.nsh
!define MUI_ICON ui2pbrowser_icon.ico
!define MUI_FINISHPAGE
!include "MUI2.nsh"
@ -127,7 +129,8 @@ RequestExecutionLevel user
PageEx license
licensetext "${LICENSE_TITLE}"
licensedata "licenses\LICENSE.index"
licensedata "licenses\LICENSE.txt"
#PageCallbacks elevatorCallback
PageExEnd
PageEx directory
dirtext "${FIREFOX_MESSAGE}"
@ -142,7 +145,6 @@ PageEx directory
PageExEnd
Page instfiles
!include i2pbrowser-mozcompat.nsi
Function .onInit
@ -153,6 +155,12 @@ Function .onInit
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
@ -181,17 +189,6 @@ Function .onInit
StrCpy $FFINSTEXE "$PROFILE\Desktop\Tor Browser\Browser\"
${EndIf}
${EndIf}
UserInfo::GetAccountType
pop $0
${If} $0 == "admin"
StrCpy $I2PINSTEXE "${I2PINSTEXE64}"
${If} ${FileExists} "${I2PINSTEXE32}\i2p.exe"
StrCpy $I2PINSTEXE "${I2PINSTEXE32}"
${EndIf}
${If} ${FileExists} "${I2PINSTEXE64}\i2p.exe"
StrCpy $I2PINSTEXE "${I2PINSTEXE64}"
${EndIf}
${EndIf}
# look for user installs
FunctionEnd
@ -219,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
@ -344,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"
@ -368,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"

View File

@ -1 +1 @@
!define I2P_VERSION 1.7.0
!define I2P_VERSION 1.8.0

View File

@ -1,3 +1,3 @@
!define VERSIONMAJOR 1
!define VERSIONMINOR 07
!define VERSIONBUILD 3
!define VERSIONMINOR 8
!define VERSIONBUILD 0

View File

@ -1 +1 @@
1.07.1
1.8.0

19
src/win/common.bat Normal file
View 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\"
)

View 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
View 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*"

View File

@ -1,39 +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"
set "I2PPath=%LocalAppData%\I2P\"
if exist "%LocalAppData%\I2P\I2P.exe" (
set "I2PPath=%LocalAppData%\I2P\"
)
if exist "%I2PPath%\jpackaged" (
cd "%LOCALAPPDATA%\I2P"
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 "%I2PPath%\I2PBrowser-Launcher\firefox.profile.i2p\extensions" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\extensions"
) else (
echo "configuring profile"
xcopy /s /i /y "%I2PPath%\I2PBrowser-Launcher\firefox.profile.i2p" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p"
)
xcopy /s /i /y "%I2PPath%\I2PBrowser-Launcher\firefox.profile.i2p\user.js" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\user.js"
xcopy /s /i /y "%I2PPath%\I2PBrowser-Launcher\firefox.profile.i2p\prefs.js" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\prefs.js"
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

View File

@ -1,39 +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"
set "I2PPath=%LocalAppData%\I2P\"
if exist "%LocalAppData%\I2P\I2P.exe" (
set "I2PPath=%LocalAppData%\I2P\"
)
if exist "%I2PPath%\jpackaged" (
cd "%LOCALAPPDATA%\I2P"
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 "%I2PPath%\I2PBrowser-Launcher\firefox.profile.i2p\extensions" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\extensions"
) else (
echo "configuring profile"
xcopy /s /i /y "%I2PPath%\I2PBrowser-Launcher\firefox.profile.i2p" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p"
)
xcopy /s /i /y "%I2PPath%\I2PBrowser-Launcher\firefox.profile.i2p\user.js" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\user.js"
xcopy /s /i /y "%I2PPath%\I2PBrowser-Launcher\firefox.profile.i2p\prefs.js" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.i2p\prefs.js"
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

View File

@ -1,29 +1,9 @@
@echo on
@echo off
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"
)
set "I2PPath=%LocalAppData%\I2P\"
if exist "%LocalAppData%\I2P\I2P.exe" (
set "I2PPath=%LocalAppData%\I2P\"
)
if exist "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p\" (
echo "profile is configured"
xcopy /s /i /y "%I2PPath%\I2PBrowser-Launcher\firefox.profile.config.i2p\extensions" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p\extensions"
) else (
echo "configuring profile"
xcopy /s /i /y "%I2PPath%\I2PBrowser-Launcher\firefox.profile.config.i2p" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p"
)
xcopy /s /i /y "%I2PPath%\I2PBrowser-Launcher\firefox.profile.config.i2p\user.js" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p\user.js"
xcopy /s /i /y "%I2PPath%\I2PBrowser-Launcher\firefox.profile.config.i2p\prefs.js" "%LOCALAPPDATA%\I2PBrowser-Launcher\firefox.profile.config.i2p\prefs.js"
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
View 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
View 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
View 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