Compare commits
144 Commits
20230312
...
i2p-firefo
Author | SHA1 | Date | |
---|---|---|---|
134ebeb1d0 | |||
b4a3691aae | |||
03748e0c0e | |||
d4a40e8c86 | |||
d38fadc902 | |||
dbb865603a | |||
456b26a860 | |||
62284056c3 | |||
41c06c821c | |||
d32c850ede | |||
f5f4d1c014 | |||
4ad846d151 | |||
6dfeaded43 | |||
57b500a614 | |||
078e542ef0 | |||
81d81adc4c | |||
b82986ccf4 | |||
4ef50bb85a | |||
b8809bed47 | |||
16fc4da41c | |||
2c44a9c8ad | |||
35666caefd | |||
bf89c119a7 | |||
1277dae92b | |||
a4476dc990 | |||
1e959d0aa1 | |||
8f6e7bc83c | |||
fc84098dc9 | |||
52a33b5334 | |||
e055eb8aa9 | |||
8d1eb7e01f | |||
ab1d7047ca | |||
9a190ae75d | |||
38aa89e586 | |||
9b10707f14 | |||
79f3337056 | |||
7a550091f2 | |||
4767e1fba2 | |||
ef99328eed | |||
936966ee4c | |||
07aed0ab00 | |||
d70eb26dbf | |||
df2802bf5d | |||
4fdc0a5dc9 | |||
e619b3fd19 | |||
e1e61ec7b2 | |||
3d7444e33e | |||
b75da98147 | |||
3d70bc5e59 | |||
ab7b24bb0d | |||
9baefba911 | |||
f48d8017c5 | |||
d01d0bb513 | |||
5e26057f9c | |||
8be149e02f | |||
d73832f1f6 | |||
a7ae0ec8f7 | |||
6ec4834a08 | |||
82d111d598 | |||
2ed7e7ef98 | |||
bdf8715ce5 | |||
175e811ac3 | |||
b3ff9d50f8 | |||
31135cc664 | |||
5c91612f90 | |||
c65df41f76 | |||
1a78538525 | |||
8ec161aceb | |||
c76541979a | |||
6f14dc1a3a | |||
7a32f97f29 | |||
790300e996 | |||
6a4aa0b74c | |||
32e26956bf | |||
b8c1c44e66 | |||
0a52d64847 | |||
23e77ef901 | |||
3f419675fe | |||
99a779d89f | |||
2ce03a426c | |||
ab9965e0b8 | |||
6491551577 | |||
ec13b0f94b | |||
11b7096fa5 | |||
1959aac3a8 | |||
1414fe3b53 | |||
03a3487aa7 | |||
bb55985bb8 | |||
95fbcde2dc | |||
157821ef91 | |||
371428e03c | |||
9e90df0181 | |||
893f1f9043 | |||
d76c1ff567 | |||
56be9ed3e0 | |||
e3e19ca4d4 | |||
144e6ba9e0 | |||
b2fdfc1e89 | |||
b1db589787 | |||
a3da3c2ace | |||
5e27d8588a | |||
2a185f5fe3 | |||
f0f194242b | |||
b9c6b6db49 | |||
c14077606b | |||
f53a7759e4 | |||
0566665a24 | |||
9d8da8b65a | |||
cbf693dfb3 | |||
2b24239267 | |||
706ae974bc | |||
d7544ced5f | |||
ec44c0f6e3 | |||
10fe05066c | |||
a5c7bac581 | |||
7eeb2e4523 | |||
9cae0f78ad | |||
99438cfc33 | |||
eba4ebe3d0 | |||
7f24838725 | |||
673725304c | |||
7cf2bf455a | |||
d177435b50 | |||
33fb6ab6d5 | |||
29827366fb | |||
edfe44bc3b | |||
432e2c54f8 | |||
8894c946bc | |||
bc9b4a0250 | |||
35841c7887 | |||
e3afb9de1d | |||
3b11def66c | |||
e152513043 | |||
81dd3ed5ef | |||
0630f77a4c | |||
204fda1a11 | |||
9e1ef2d546 | |||
688bc1b0f3 | |||
dd566165dd | |||
57833edc36 | |||
a19fcd9ea5 | |||
bfddc378cd | |||
fd712293b4 | |||
068fbee70e |
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
||||
* -text
|
118
.github/workflows/ant.yml
vendored
Normal file
118
.github/workflows/ant.yml
vendored
Normal file
@ -0,0 +1,118 @@
|
||||
|
||||
name: Java CI
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
|
||||
nsis:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: Vampire/setup-wsl@v3
|
||||
with:
|
||||
distribution: Ubuntu-20.04
|
||||
- name: Set git to use LF
|
||||
run: |
|
||||
git config --global core.autocrlf false
|
||||
git config --global core.eol lf
|
||||
git config --global user.email "github@i2p.net"
|
||||
git config --global user.name "eyedeekay Github CI Build"
|
||||
- uses: actions/checkout@v4
|
||||
- run: wsl apt-get update
|
||||
- run: wsl apt-get install -y nsis nsis-common nsis-pluginapi wget dos2unix curl jq gpg gettext
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '21'
|
||||
distribution: 'temurin'
|
||||
- name: build with script
|
||||
run: bash -c "./buildscripts/unsigned.sh; ls *.exe"
|
||||
- name: Upload I2P-Easy-Install-Bundle-unsigned.exe
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: I2P-Easy-Install-Bundle-unsigned.exe
|
||||
path: I2P-Easy-Install-Bundle-2.4.0.exe
|
||||
|
||||
buildjpackagexe:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '21'
|
||||
distribution: 'temurin'
|
||||
- name: build with script
|
||||
run: bash -c "./buildscripts/exe.sh; ls *.exe"
|
||||
- name: Upload I2P-Easy-Install-Bundle-unsigned.exe
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: I2P-EXE-unsigned.exe
|
||||
path: I2P-EXE-2.4.0.exe
|
||||
|
||||
buildjpackagmsi:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '21'
|
||||
distribution: 'temurin'
|
||||
- name: build with script
|
||||
run: bash -c "./buildscripts/msi.sh; ls *.msi"
|
||||
- name: Upload I2P-Easy-Install-Bundle-unsigned.msi
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: I2P-MSI-unsigned.msi
|
||||
path: I2P-MSI-2.4.0.msi
|
||||
|
||||
buildzip:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: Vampire/setup-wsl@v3
|
||||
with:
|
||||
distribution: Ubuntu-20.04
|
||||
- name: Set git to use LF
|
||||
run: |
|
||||
git config --global core.autocrlf false
|
||||
git config --global core.eol lf
|
||||
git config --global user.email "github@i2p.net"
|
||||
git config --global user.name "eyedeekay Github CI Build"
|
||||
- uses: actions/checkout@v4
|
||||
- run: wsl apt-get update
|
||||
- run: wsl apt-cache search 7zip
|
||||
- run: wsl apt-get install -y nsis nsis-common nsis-pluginapi wget dos2unix curl jq gpg gettext zip p7zip-full ca-certificates
|
||||
- run: choco install wget
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '21'
|
||||
distribution: 'temurin'
|
||||
- name: build with script
|
||||
run: bash -c "./buildscripts/zip.sh; ls -d * */* "
|
||||
- name: Upload I2P-windows-portable.zip
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: I2P-windows-portable.zip
|
||||
path: I2P-windows-portable.zip
|
||||
|
||||
buildtgz:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '21'
|
||||
distribution: 'temurin'
|
||||
- run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y nsis nsis-common nsis-pluginapi wget dos2unix curl jq gpg gettext
|
||||
- name: build with script
|
||||
run: ./buildscripts/targz.sh; ls *.tar.gz
|
||||
- name: Upload I2P.tar.gz
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: I2P.tar.gz
|
||||
path: I2P.tar.gz
|
89
.github/workflows/release.yml
vendored
Normal file
89
.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,89 @@
|
||||
name: Release
|
||||
|
||||
#on: [push]
|
||||
|
||||
on:
|
||||
push:
|
||||
# Sequence of patterns matched against refs/tags
|
||||
tags:
|
||||
- 'i2p-firefox-*.*.*' # Release i2p-firefox-1.2.3
|
||||
- 'i2p-firefox-*.*.*-*' # Release i2p-firefox-1.2.3
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: |
|
||||
changelog.txt
|
||||
sparse-checkout-cone-mode: false
|
||||
- name: sleep 15 minutes
|
||||
run: |
|
||||
echo "sleeping 20 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 19 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 18 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 17 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 16 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 15 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 14 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 13 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 12 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 11 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 10 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 9 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 8 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 7 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 6 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 5 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 4 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 3 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 2 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 1 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
- name: Download artifacts
|
||||
id: download-artifact
|
||||
uses: dawidd6/action-download-artifact@v3
|
||||
with:
|
||||
skip_unpack: true
|
||||
workflow: ant.yml
|
||||
if_no_artifact_found: fail
|
||||
# remove .zip file extension
|
||||
- run: for f in *.zip; do unzip "$f"; rm "$f"; done
|
||||
- run: echo "" | tee -a changelog.txt
|
||||
- run: echo "## Checksums" | tee -a changelog.txt
|
||||
- run: echo "" | tee -a changelog.txt
|
||||
- run: echo '```' | tee -a changelog.txt
|
||||
- run: sha256sum * | tee -a changelog.txt
|
||||
- run: echo '```' | tee -a changelog.txt
|
||||
- run: echo "" | tee -a changelog.txt
|
||||
- run: echo '```' | tee -a changelog.txt
|
||||
- run: file * | tee -a changelog.txt
|
||||
- run: echo '```' | tee -a changelog.txt
|
||||
- run: echo "" | tee -a changelog.txt
|
||||
- name: Upload artifacts
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
artifacts: "*"
|
||||
bodyFile: "changelog.txt"
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -25,4 +25,7 @@ config_override.sh
|
||||
i2pkeys
|
||||
onionkeys
|
||||
tlskeys
|
||||
tmp
|
||||
tmp
|
||||
/.stfolder/
|
||||
/.vscode/
|
||||
*github-release-config*.sh*
|
46
Dockerfile
Normal file
46
Dockerfile
Normal file
@ -0,0 +1,46 @@
|
||||
FROM debian:sid
|
||||
|
||||
## Originally found at: https://yusuke.blog/2021/10/19/3149 and updated to Java 20.
|
||||
## This does not work yet.
|
||||
|
||||
RUN dpkg --add-architecture i386
|
||||
RUN apt-get update
|
||||
RUN apt-get install -y curl fakeroot unzip gnupg dos2unix make nsis* dos2unix curl jq
|
||||
|
||||
# install JDK
|
||||
RUN curl --output /opt/java20.zip https://download.java.net/java/GA/jdk20.0.1/b4887098932d415489976708ad6d1a4b/9/GPL/openjdk-20.0.1_windows-x64_bin.zip \
|
||||
&& cd /opt/ \
|
||||
&& unzip java20.zip \
|
||||
&& rm java20.zip
|
||||
ENV JAVA_HOME /opt/jdk-20.0.1
|
||||
|
||||
# install Wine
|
||||
RUN apt-get update
|
||||
RUN apt install --install-recommends wine wine64* wine-binfmt fonts-wine -y
|
||||
RUN wine --version
|
||||
RUN wine wineboot --init
|
||||
|
||||
# install WIX TOOLSET
|
||||
RUN mkdir /opt/wix311 \
|
||||
&& cd /opt/wix311 \
|
||||
&& curl -L --output /opt/wix311/wix311.zip https://github.com/wixtoolset/wix3/releases/download/wix3112rtm/wix311-binaries.zip \
|
||||
&& unzip wix311.zip \
|
||||
&& rm wix311.zip
|
||||
|
||||
# WIX TOOLSET is requring .NET.
|
||||
RUN curl --output winetricks https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks &&\
|
||||
chmod +x winetricks && \
|
||||
mv -v winetricks /usr/local/bin
|
||||
|
||||
# DONNO why dotnet48 installation fails with "warning: exit status 5 - user selected 'Cancel' "
|
||||
# https://forum.winehq.org/viewtopic.php?f=8&t=35724
|
||||
#ENV WINEPREFIX=/dotnet-test
|
||||
#RUN /usr/local/bin/winetricks --optout -q dotnet48
|
||||
|
||||
ENV WINEPATH /opt/jdk-20.0.1/bin\;/opt/wix311
|
||||
|
||||
WORKDIR /root
|
||||
COPY . /root
|
||||
RUN echo "wine /opt/jdk-20.0.1/bin/jpackage.exe $@" > /opt/jdk-20.0.1/bin/jpackage
|
||||
RUN chmod +x /opt/jdk-20.0.1/bin/jpackage
|
||||
CMD ./buildscripts/build.sh
|
54
Makefile
54
Makefile
@ -14,29 +14,19 @@ all: version install.exe
|
||||
fmt:
|
||||
find . -name '*.java' -exec clang-format -i {} \;
|
||||
|
||||
tag:
|
||||
git tag $(PROFILE_VERSION)
|
||||
|
||||
version:
|
||||
./buildscripts/version.sh
|
||||
|
||||
jpackage: version I2P build/I2P/config all
|
||||
jpackage: version I2P build/I2P all
|
||||
|
||||
help: version
|
||||
@echo "I2P-Easy-Install-Bundle-$(PROFILE_VERSION)"
|
||||
@echo "$(SIGNER)"
|
||||
@echo "$(I2P_VERSION)"
|
||||
@echo "$(MAJOR).$(MINOR).$(BUILD)"
|
||||
@echo "$(preset)"
|
||||
|
||||
prep:
|
||||
|
||||
install.exe:
|
||||
./buildscripts/nsis.sh
|
||||
|
||||
export RES_DIR="../i2p.i2p.jpackage-build/installer/resources"
|
||||
export PKG_DIR="../i2p.i2p.jpackage-build/pkg-temp"
|
||||
#export I2P_JBIGI="../i2p.i2p.jpackage-build/installer/lib/jbigi"
|
||||
./buildscripts/unsigned.sh
|
||||
|
||||
distclean: clean
|
||||
rm -rf I2P
|
||||
@ -45,10 +35,9 @@ I2P:
|
||||
./buildscripts/build.sh
|
||||
|
||||
build/I2P: I2P build
|
||||
cp -v I2P build/I2P
|
||||
|
||||
src/I2P/config:
|
||||
|
||||
build/I2P/config: src/I2P/config build/I2P
|
||||
build/I2P: build/I2P
|
||||
|
||||
#
|
||||
# Warning: a displayed license file of more than 28752 bytes
|
||||
@ -65,38 +54,3 @@ build:
|
||||
@echo "creating build directory"
|
||||
mkdir -p build
|
||||
|
||||
include makefiles/su.mk
|
||||
|
||||
include makefiles/su-unsigned.mk
|
||||
|
||||
I2P_DATE=`date +%Y-%m-%d`
|
||||
|
||||
MAGNET=`bttools torrent dumpinfo i2pwinupdate.su3.torrent | grep 'Magnet' | sed 's|Magnet: ||g' | sed 's|%3A|:|g'| sed 's|%2F|/|g'`
|
||||
MAGNET_TESTING=`bttools torrent dumpinfo i2pwinupdate-testing.su3.torrent | grep 'MagNet' | sed 's|MagNet: ||g' | sed 's|%3A|:|g'| sed 's|%2F|/|g'`
|
||||
|
||||
magnet:
|
||||
echo "$(MAGNET)"
|
||||
|
||||
BLANK=`awk '! NF { print NR; exit }' changelog.txt`
|
||||
|
||||
I2P.zip: I2P-jpackage-windows-$(I2P_VERSION).zip
|
||||
|
||||
I2P-jpackage-windows-$(I2P_VERSION).zip:
|
||||
sh -c 'powershell Compress-Archive I2P I2P-jpackage-windows-$(I2P_VERSION).zip || zip I2P-jpackage-windows-$(I2P_VERSION).zip -r I2P'
|
||||
|
||||
changelog:
|
||||
head -n "$(BLANK)" changelog.txt
|
||||
|
||||
release-jpackage: I2P-jpackage-windows-$(I2P_VERSION).zip
|
||||
head -n "$(BLANK)" changelog.txt | gothub release -p -u eyedeekay -r i2p -t i2p-jpackage-windows-$(I2P_VERSION) -n i2p-jpackage-windows-$(I2P_VERSION) -d -; true
|
||||
|
||||
update-release-jpackage:
|
||||
head -n "$(BLANK)" changelog.txt | gothub edit -p -u eyedeekay -r i2p -t i2p-jpackage-windows-$(I2P_VERSION) -n i2p-jpackage-windows-$(I2P_VERSION) -d -; true
|
||||
|
||||
delete-release-jpackage:
|
||||
gothub delete -u eyedeekay -r i2p -t i2p-jpackage-windows-$(I2P_VERSION); true
|
||||
|
||||
upload-release-jpackage:
|
||||
gothub upload -R -u eyedeekay -r i2p -t i2p-jpackage-windows-$(I2P_VERSION) -n "i2p-jpackage-windows-$(I2P_VERSION)" -f "./I2P-jpackage-windows-$(I2P_VERSION).zip"
|
||||
|
||||
jpackage-release: release-jpackage upload-release-jpackage
|
||||
|
29
UPDATES.md
29
UPDATES.md
@ -1,29 +0,0 @@
|
||||
Setting up an Update Server for an I2P Bundle
|
||||
=============================================
|
||||
|
||||
It is important to set up a signed update server so that people are able to
|
||||
safely and anonymously update your I2P bundle.
|
||||
|
||||
The quick way:
|
||||
--------------
|
||||
|
||||
This process depends on my ability to push releases to github. If you are
|
||||
forking, setting up a dev server, or taking over because I got hit by a bus,
|
||||
you'll need to do it the complete way.
|
||||
|
||||
For as long as I am building updates, you will be able to mirror the jpackaged
|
||||
Windows bundle by cloning the repository `https://github.com/eyedeekay/i2p` and
|
||||
running the `make docker run` target in that repository. You can retrieve the
|
||||
base32 address of your update server by viewing the log with
|
||||
`docker logs eephttpd-jpackage | grep b32.i2p | tee eephttpd-address.md`. To
|
||||
update the site, run `./update.site.sh` in that repository.
|
||||
|
||||
Once you have cloned the repository and started the container with
|
||||
`make docker run`, you can simply add `path/to/repo/update-site.sh` to your
|
||||
`crontab` and it will update at an interval of your choosing.
|
||||
|
||||
The complete way:
|
||||
-----------------
|
||||
|
||||
TODO: describe how to do it with less of the awesome fancy stuff I put together
|
||||
to make it easier on myself to keep an update server going.
|
@ -7,7 +7,7 @@ cd "$SCRIPT_DIR" || exit 1
|
||||
|
||||
. ./config.sh
|
||||
. ./i2pversion
|
||||
./build.sh
|
||||
./buildscripts/build.sh
|
||||
jpackage --name I2P-EXE --app-version "$I2P_VERSION" \
|
||||
--verbose \
|
||||
--java-options "-Xmx512m" \
|
||||
|
@ -30,10 +30,10 @@ if [ "$JAVA" -lt "17" ]; then
|
||||
fi
|
||||
|
||||
if [ -z "${JAVA_HOME}" ]; then
|
||||
export JAVA_HOME=`type -p java|xargs readlink -f|xargs dirname|xargs dirname`
|
||||
export JAVA_HOME=$(type -p java|xargs readlink -f|xargs dirname|xargs dirname)
|
||||
fi
|
||||
if [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
|
||||
export JAVA_HOME=`type -p java|xargs readlink -f|xargs dirname|xargs dirname`
|
||||
export JAVA_HOME=$(type -p java|xargs readlink -f|xargs dirname|xargs dirname)
|
||||
fi
|
||||
echo "Building with: $JAVA, $JAVA_HOME"
|
||||
sleep 5s
|
||||
@ -65,6 +65,7 @@ git pull --tags
|
||||
git checkout -b "i2p-$VERSION$VERSIONDATE-$EXTRACODE" || :
|
||||
git commit -am "i2p-$VERSION$VERSIONDATE-$EXTRACODE" || :
|
||||
git archive --format=tar.gz --output="$SCRIPT_DIR/../i2p.firefox/i2p.i2p.jpackage-build.tar.gz" "i2p-$VERSION$VERSIONDATE-$EXTRACODE"
|
||||
git checkout "i2p-$VERSION$VERSIONDATE-$EXTRACODE" || :
|
||||
|
||||
for i in $COUNT; do
|
||||
echo -n "$i...."; sleep 1s
|
||||
@ -94,15 +95,25 @@ mkdir -p "$SCRIPT_DIR/build"
|
||||
cp "$I2P_JARS"/*.jar "$SCRIPT_DIR/build"
|
||||
cp "$I2P_JBIGI_JAR" "$SCRIPT_DIR/build"
|
||||
if [ ! -f "$SCRIPT_DIR/build/jna.jar" ]; then
|
||||
wget -O "$SCRIPT_DIR/build/jna.jar" "https://repo1.maven.org/maven2/net/java/dev/jna/jna/$JNA_VERSION/jna-$JNA_VERSION.jar"
|
||||
echo "downloading jna"
|
||||
wget_download "https://repo1.maven.org/maven2/net/java/dev/jna/jna/$JNA_VERSION/jna-$JNA_VERSION.jar" -O "$SCRIPT_DIR/build/jna.jar"
|
||||
fi
|
||||
|
||||
if [ ! -f "$SCRIPT_DIR/build/jna-platform.jar" ]; then
|
||||
wget -O "$SCRIPT_DIR/build/jna-platform.jar" "https://repo1.maven.org/maven2/net/java/dev/jna/jna-platform/$JNA_VERSION/jna-platform-$JNA_VERSION.jar"
|
||||
echo "downloading jna-platform"
|
||||
wget_download "https://repo1.maven.org/maven2/net/java/dev/jna/jna-platform/$JNA_VERSION/jna-platform-$JNA_VERSION.jar" -O "$SCRIPT_DIR/build/jna-platform.jar"
|
||||
fi
|
||||
|
||||
if [ ! -f "$SCRIPT_DIR/build/i2pfirefox.jar" ]; then
|
||||
wget -O "$SCRIPT_DIR/build/i2pfirefox.jar" "https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/$I2PFIREFOX_VERSION/i2pfirefox.jar"
|
||||
if [ ! -f "$SCRIPT_DIR/build/i2pfirefox.zip" ]; then
|
||||
echo "downloading i2pfirefox jars"
|
||||
wget_download "https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/$I2PFIREFOX_VERSION/plugin.zip" -O "$SCRIPT_DIR/build/i2pfirefox.zip"
|
||||
fi
|
||||
|
||||
if [ ! -d "$SCRIPT_DIR/build/I2P/config/plugins/i2pfirefox" ]; then
|
||||
mkdir -p "$SCRIPT_DIR/build/I2P/config/plugins/"
|
||||
unzip "$SCRIPT_DIR/build/i2pfirefox.zip" -d "$SCRIPT_DIR/build/I2P/config/plugins/"
|
||||
rm -rf "$SCRIPT_DIR/build/I2P/config/plugins/i2pfirefox"
|
||||
mv "$SCRIPT_DIR/build/I2P/config/plugins/plugin" "$SCRIPT_DIR/build/I2P/config/plugins/i2pfirefox"
|
||||
fi
|
||||
|
||||
for dll in "$I2P_JBIGI/"*windows*.dll; do
|
||||
@ -110,10 +121,11 @@ for dll in "$I2P_JBIGI/"*windows*.dll; do
|
||||
done
|
||||
|
||||
cd "$SCRIPT_DIR"/java
|
||||
"$JAVA_HOME"/bin/javac -Xlint:deprecation -d ../build -classpath "$SCRIPT_DIR/build/i2pfirefox.jar:$SCRIPT_DIR/build/jna.jar":"$SCRIPT_DIR/build/jna-platform.jar":"$SCRIPT_DIR/build/i2p.jar":"$SCRIPT_DIR/build/router.jar":"$SCRIPT_DIR/build/routerconsole.jar":"$SCRIPT_DIR/build/jbigi.jar" \
|
||||
"$JAVA_HOME"/bin/javac -Xlint:deprecation -d ../build -classpath "$SCRIPT_DIR/build/i2pfirefox.jar:$SCRIPT_DIR/build/jna.jar:$SCRIPT_DIR/build/jna-platform.jar":"$SCRIPT_DIR/build/i2p.jar:$SCRIPT_DIR/build/router.jar:$SCRIPT_DIR/build/routerconsole.jar:$SCRIPT_DIR/build/jbigi.jar" \
|
||||
net/i2p/router/CopyConfigDir.java \
|
||||
net/i2p/router/WindowsServiceUtil.java \
|
||||
net/i2p/router/WindowsUpdatePostProcessor.java \
|
||||
net/i2p/router/WindowsAppUtil.java \
|
||||
net/i2p/router/WinUpdatePostProcessor.java \
|
||||
net/i2p/router/WinLauncher.java \
|
||||
net/i2p/router/WinUpdateProcess.java \
|
||||
net/i2p/router/ZipUpdateProcess.java
|
||||
|
@ -15,12 +15,7 @@ if [ -f "$SCRIPT_DIR/config_override.sh" ]; then
|
||||
. "$SCRIPT_DIR/config_override.sh"
|
||||
fi
|
||||
|
||||
MAKENSIS=$(which makensis)
|
||||
if [ -z "$MAKENSIS" ]; then
|
||||
MAKENSIS="wsl makensis"
|
||||
fi
|
||||
|
||||
cp "$SCRIPT_DIR"/src/nsis/*.nsi "$SCRIPT_DIR"/build
|
||||
cp "$SCRIPT_DIR"/src/nsis/*.nsh "$SCRIPT_DIR"/build
|
||||
cp "$SCRIPT_DIR"/src/icons/*.ico "$SCRIPT_DIR"/build
|
||||
cd "$SCRIPT_DIR"/build && $MAKENSIS i2pbrowser-installer.nsi && cp I2P-Easy-Install-Bundle-*.exe ../ && echo "built windows installer"
|
||||
cd "$SCRIPT_DIR"/build && makensisi i2pbrowser-installer.nsi && cp I2P-Easy-Install-Bundle-*.exe ../ && echo "built windows installer"
|
42
buildscripts/release-download.sh
Executable file
42
buildscripts/release-download.sh
Executable file
@ -0,0 +1,42 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)/..
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
|
||||
. "$SCRIPT_DIR/i2pversion"
|
||||
|
||||
if [ -f i2pversion_override ]; then
|
||||
. "$SCRIPT_DIR/i2pversion_override"
|
||||
fi
|
||||
|
||||
mv "$SCRIPT_DIR/config_override.sh" "$SCRIPT_DIR/config_override.sh.bak"
|
||||
. "$SCRIPT_DIR/config.sh"
|
||||
|
||||
### 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
|
||||
|
||||
. "$HOME/github-release-config.sh"
|
||||
|
||||
if [ -f ./i2pversion_override ]; then
|
||||
. ./i2pversion_override
|
||||
fi
|
||||
|
||||
|
||||
|
||||
echo github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "I2P-Easy-Install-Bundle-$I2P_VERSION.exe" -t "$I2P_VERSION"
|
||||
github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "I2P-Easy-Install-Bundle-$I2P_VERSION.exe" -t "$I2P_VERSION"
|
||||
|
||||
echo github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "I2P.zip" -t "$I2P_VERSION"
|
||||
github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "I2P.zip" -t "$I2P_VERSION"
|
||||
|
||||
echo github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "i2p.i2p.jpackage-build.tar.gz" -t "$I2P_VERSION"
|
||||
github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "i2p.i2p.jpackage-build.tar.gz" -t "$I2P_VERSION"
|
||||
|
||||
echo github-release download -u "$GITHUB_USERNAME" -r i2p -t "$I2P_VERSION" -n "./I2P-jpackage-windows-$I2P_VERSION.zip"
|
||||
github-release download -u "$GITHUB_USERNAME" -r i2p -t "$I2P_VERSION" -n "./I2P-jpackage-windows-$I2P_VERSION.zip"
|
50
buildscripts/release-support.sh
Executable file
50
buildscripts/release-support.sh
Executable file
@ -0,0 +1,50 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)/..
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
|
||||
. "$SCRIPT_DIR/i2pversion"
|
||||
|
||||
if [ -f i2pversion_override ]; then
|
||||
. "$SCRIPT_DIR/i2pversion_override"
|
||||
fi
|
||||
|
||||
mv "$SCRIPT_DIR/config_override.sh" "$SCRIPT_DIR/config_override.sh.bak"
|
||||
. "$SCRIPT_DIR/config.sh"
|
||||
|
||||
### 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
|
||||
|
||||
. "$HOME/github-release-config.sh"
|
||||
|
||||
if [ -f ./i2pversion_override ]; then
|
||||
. ./i2pversion_override
|
||||
fi
|
||||
|
||||
echo github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "i2pwinupdate.su3" -t "$I2P_VERSION"
|
||||
github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "i2pwinupdate.su3" -t "$I2P_VERSION"
|
||||
|
||||
echo github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "i2pwinupdate.su3.torrent" -t "$I2P_VERSION"
|
||||
github-release download -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "i2pwinupdate.su3.torrent" -t "$I2P_VERSION"
|
||||
|
||||
if [ ! -z "$I2P_SNARK_DIR" ]; then
|
||||
if [ "$I2P_SNARK_DIR" = "$HOME/.i2p/i2psnark" ]; then
|
||||
cp -v "i2pwinupdate.su3" "$I2P_SNARK_DIR"
|
||||
cp -v "i2pwinupdate.su3.torrent" "$I2P_SNARK_DIR"
|
||||
fi
|
||||
if [ "$I2P_SNARK_DIR" = "$LOCALAPPDATA/i2p/i2psnark/" ]; then
|
||||
cp -v "i2pwinupdate.su3" "$I2P_SNARK_DIR"
|
||||
cp -v "i2pwinupdate.su3.torrent" "$I2P_SNARK_DIR"
|
||||
fi
|
||||
if [ "$I2P_SNARK_DIR" = "/var/lib/i2p/i2p-config/i2psnark/" ]; then
|
||||
sudo cp -v "i2pwinupdate.su3" "$I2P_SNARK_DIR"
|
||||
sudo cp -v "i2pwinupdate.su3.torrent" "$I2P_SNARK_DIR"
|
||||
sudo chown i2psvc:i2psvc "$I2P_SNARK_DIR/i2pwinupdate.su3" "$I2P_SNARK_DIR/i2pwinupdate.su3.torrent"
|
||||
fi
|
||||
fi
|
44
buildscripts/release-torrent.sh
Executable file
44
buildscripts/release-torrent.sh
Executable file
@ -0,0 +1,44 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)/..
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
|
||||
. "$SCRIPT_DIR/i2pversion"
|
||||
|
||||
if [ -f i2pversion_override ]; then
|
||||
. "$SCRIPT_DIR/i2pversion_override"
|
||||
fi
|
||||
|
||||
mv "$SCRIPT_DIR/config_override.sh" "$SCRIPT_DIR/config_override.sh.bak"
|
||||
. "$SCRIPT_DIR/config.sh"
|
||||
|
||||
### 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
|
||||
|
||||
. "$HOME/github-release-config.sh"
|
||||
|
||||
if [ -f ./i2pversion_override ]; then
|
||||
. ./i2pversion_override
|
||||
fi
|
||||
|
||||
cp -v "I2P-Easy-Install-Bundle-$I2P_VERSION.exe" "I2P-Easy-Install-Bundle-$I2P_VERSION-signed.exe"
|
||||
java -cp "$I2P_LIBS/*" net.i2p.crypto.SU3File sign -c ROUTER -f EXE I2P-Easy-Install-Bundle-$I2P_VERSION-signed.exe I2P-Easy-Install-Bundle-$I2P_VERSION-signed.su3 "$HOME/.i2p-plugin-keys/news-su3-keystore.ks" $I2P_VERSION $SIGNER
|
||||
rm -f i2pwinupdate.su3.torrent
|
||||
cp -v I2P-Easy-Install-Bundle-$I2P_VERSION-signed.su3 i2pwinupdate.su3
|
||||
mktorrent \
|
||||
--announce=http://tracker2.postman.i2p/announce.php \
|
||||
--announce=http://w7tpbzncbcocrqtwwm3nezhnnsw4ozadvi2hmvzdhrqzfxfum7wa.b32.i2p/a \
|
||||
--announce=http://mb5ir7klpc2tj6ha3xhmrs3mseqvanauciuoiamx2mmzujvg67uq.b32.i2p/a \
|
||||
i2pwinupdate.su3
|
||||
ZIPCHECKSUM=$(sha256sum "i2pwinupdate.su3")
|
||||
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "i2pwinupdate.su3" -l "$ZIPCHECKSUM" -t "$I2P_VERSION" -n "i2pwinupdate.su3"
|
||||
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "i2pwinupdate.su3" -l "$ZIPCHECKSUM" -t "$I2P_VERSION" -n "i2pwinupdate.su3"
|
||||
ZIPCHECKSUM=$(sha256sum "i2pwinupdate.su3.torrent")
|
||||
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "i2pwinupdate.su3.torrent" -l "$ZIPCHECKSUM" -t "$I2P_VERSION" -n "i2pwinupdate.su3.torrent"
|
||||
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "i2pwinupdate.su3.torrent" -l "$ZIPCHECKSUM" -t "$I2P_VERSION" -n "i2pwinupdate.su3.torrent"
|
73
buildscripts/release-upload.sh
Executable file
73
buildscripts/release-upload.sh
Executable file
@ -0,0 +1,73 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)/..
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
|
||||
. "$SCRIPT_DIR/i2pversion"
|
||||
|
||||
if [ -f i2pversion_override ]; then
|
||||
. "$SCRIPT_DIR/i2pversion_override"
|
||||
fi
|
||||
|
||||
mv "$SCRIPT_DIR/config_override.sh" "$SCRIPT_DIR/config_override.sh.bak"
|
||||
. "$SCRIPT_DIR/config.sh"
|
||||
|
||||
### 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 .
|
||||
"$SCRIPT_DIR"/buildscripts/unsigned.sh
|
||||
|
||||
. "$HOME/github-release-config.sh"
|
||||
|
||||
if [ -f ./i2pversion_override ]; then
|
||||
. ./i2pversion_override
|
||||
fi
|
||||
|
||||
BLANK=$(awk '! NF { print NR; exit }' changelog.txt)
|
||||
|
||||
DESCRIPTION="Release build of i2p.firefox for $I2P_VERSION
|
||||
==========================================================
|
||||
|
||||
$(head -n $BLANK changelog.txt)"
|
||||
|
||||
echo github-release release -p -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "$I2P_VERSION" -d "$DESCRIPTION" -t "$I2P_VERSION"
|
||||
github-release release -p -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "$I2P_VERSION" -d "$DESCRIPTION" -t "$I2P_VERSION"
|
||||
sleep 2s;
|
||||
EXECHECKSUM=$(sha256sum "I2P-Easy-Install-Bundle-$I2P_VERSION.exe")
|
||||
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P-Easy-Install-Bundle-$I2P_VERSION.exe" -l "$EXECHECKSUM" -t "$I2P_VERSION" -n "I2P-Easy-Install-Bundle-$I2P_VERSION.exe"
|
||||
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P-Easy-Install-Bundle-$I2P_VERSION.exe" -l "$EXECHECKSUM" -t "$I2P_VERSION" -n "I2P-Easy-Install-Bundle-$I2P_VERSION.exe"
|
||||
powershell Compress-Archive -force I2P I2P.zip
|
||||
ZIPCHECKSUM=$(sha256sum "I2P.zip")
|
||||
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P.zip" -l "$ZIPCHECKSUM" -t "$I2P_VERSION" -n "I2P.zip"
|
||||
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P.zip" -l "$ZIPCHECKSUM" -t "$I2P_VERSION" -n "I2P.zip"
|
||||
TARCHECKSUM=$(sha256sum "../i2p.i2p.jpackage-build.tar.gz")
|
||||
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "../i2p.i2p.jpackage-build.tar.gz" -l "Upstream I2P Router source code $TARCHECKSUM" -t "$I2P_VERSION" -n "i2p.i2p.jpackage-build.tar.gz"
|
||||
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "../i2p.i2p.jpackage-build.tar.gz" -l "Upstream I2P Router source code $TARCHECKSUM" -t "$I2P_VERSION" -n "i2p.i2p.jpackage-build.tar.gz"
|
||||
sh -c "powershell Compress-Archive I2P I2P-jpackage-windows-$I2P_VERSION.zip || zip I2P-jpackage-windows-$I2P_VERSION.zip -r I2P"
|
||||
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "i2p-jpackage-windows-$I2P_VERSION.zip" -t "$I2P_VERSION" -f "./I2P-jpackage-windows-$I2P_VERSION.zip"
|
||||
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "i2p-jpackage-windows-$I2P_VERSION.zip" -t "$I2P_VERSION" -f "./I2P-jpackage-windows-$I2P_VERSION.zip"
|
||||
|
||||
GITHUB_USERNAME=i2p
|
||||
echo github-release release -p -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "$I2P_VERSION" -d "$DESCRIPTION" -t "$I2P_VERSION"
|
||||
github-release release -p -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "$I2P_VERSION" -d "$DESCRIPTION" -t "$I2P_VERSION"
|
||||
sleep 2s;
|
||||
EXECHECKSUM=$(sha256sum "I2P-Easy-Install-Bundle-$I2P_VERSION.exe")
|
||||
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P-Easy-Install-Bundle-$I2P_VERSION.exe" -l "$EXECHECKSUM" -t "$I2P_VERSION" -n "I2P-Easy-Install-Bundle-$I2P_VERSION.exe"
|
||||
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P-Easy-Install-Bundle-$I2P_VERSION.exe" -l "$EXECHECKSUM" -t "$I2P_VERSION" -n "I2P-Easy-Install-Bundle-$I2P_VERSION.exe"
|
||||
powershell Compress-Archive -force I2P I2P.zip
|
||||
ZIPCHECKSUM=$(sha256sum "I2P.zip")
|
||||
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P.zip" -l "$ZIPCHECKSUM" -t "$I2P_VERSION" -n "I2P.zip"
|
||||
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "I2P.zip" -l "$ZIPCHECKSUM" -t "$I2P_VERSION" -n "I2P.zip"
|
||||
TARCHECKSUM=$(sha256sum "../i2p.i2p.jpackage-build.tar.gz")
|
||||
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "../i2p.i2p.jpackage-build.tar.gz" -l "Upstream I2P Router source code $TARCHECKSUM" -t "$I2P_VERSION" -n "i2p.i2p.jpackage-build.tar.gz"
|
||||
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -f "../i2p.i2p.jpackage-build.tar.gz" -l "Upstream I2P Router source code $TARCHECKSUM" -t "$I2P_VERSION" -n "i2p.i2p.jpackage-build.tar.gz"
|
||||
sh -c "powershell Compress-Archive I2P I2P-jpackage-windows-$I2P_VERSION.zip || zip I2P-jpackage-windows-$I2P_VERSION.zip -r I2P"
|
||||
echo github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "i2p-jpackage-windows-$I2P_VERSION.zip" -t "$I2P_VERSION" -f "./I2P-jpackage-windows-$I2P_VERSION.zip"
|
||||
github-release upload -R -u "$GITHUB_USERNAME" -r "i2p.firefox" -n "i2p-jpackage-windows-$I2P_VERSION.zip" -t "$I2P_VERSION" -f "./I2P-jpackage-windows-$I2P_VERSION.zip"
|
@ -10,7 +10,6 @@ if [ -f "$SCRIPT_DIR/config_override.sh" ]; then
|
||||
fi
|
||||
export machine=unix
|
||||
"$SCRIPT_DIR"/buildscripts/clean.sh
|
||||
wsl "$SCRIPT_DIR"/buildscripts/clean.sh
|
||||
"$SCRIPT_DIR"/buildscripts/build.sh
|
||||
cd "$SCRIPT_DIR/I2P" || exit 1
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)/..
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
cd "$SCRIPT_DIR" || cd ../ ; SCRIPT_DIR=$(pwd)
|
||||
|
||||
. "$SCRIPT_DIR/config.sh"
|
||||
|
||||
@ -10,6 +10,5 @@ if [ -f "$SCRIPT_DIR/config_override.sh" ]; then
|
||||
fi
|
||||
|
||||
"$SCRIPT_DIR"/buildscripts/clean.sh
|
||||
wsl "$SCRIPT_DIR"/buildscripts/clean.sh
|
||||
"$SCRIPT_DIR"/buildscripts/build.sh
|
||||
"$SCRIPT_DIR"/buildscripts/nsis.sh
|
@ -1,7 +1,7 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)/..
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
cd "$SCRIPT_DIR" || cd ../ ; SCRIPT_DIR=$(pwd)
|
||||
|
||||
. "$SCRIPT_DIR/config.sh"
|
||||
|
||||
@ -9,7 +9,6 @@ if [ -f "$SCRIPT_DIR/config_override.sh" ]; then
|
||||
. "$SCRIPT_DIR/config_override.sh"
|
||||
fi
|
||||
"$SCRIPT_DIR"/buildscripts/clean.sh
|
||||
wsl "$SCRIPT_DIR"/buildscripts/clean.sh
|
||||
"$SCRIPT_DIR"/buildscripts/build.sh
|
||||
cd "$SCRIPT_DIR/I2P" || exit 1
|
||||
|
||||
@ -17,7 +16,8 @@ TORSOCKS=$(which torsocks)
|
||||
if [ -f "${TORSOCKS}" ]; then
|
||||
. "${TORSOCKS}" on
|
||||
fi
|
||||
"$SCRIPT_DIR"/src/win/torbrowser-windows.sh
|
||||
which wsl && wsl ../src/win/torbrowser-windows.sh
|
||||
which wsl || "$SCRIPT_DIR"/src/win/torbrowser-windows.sh
|
||||
version="$(curl -s https://aus1.torproject.org/torbrowser/update_3/release/downloads.json | jq -r ".version")"
|
||||
. "${TORSOCKS}" off
|
||||
locale="en-US" # mention your locale. default = en-US
|
||||
@ -29,5 +29,6 @@ rm -vrf "tor-browser_${locale}"
|
||||
cd "$SCRIPT_DIR" || exit 1
|
||||
|
||||
rm -rf I2P-portable && cp -r I2P I2P-portable
|
||||
#powershell Compress-Archive -force I2P-portable I2P-windows-portable.zip
|
||||
zip -r I2P-windows-portable.zip I2P-portable
|
||||
|
||||
which zip && zip -r I2P-windows-portable.zip I2P-portable
|
||||
which zip || powershell Compress-Archive -force I2P-portable I2P-windows-portable.zip
|
@ -1,4 +1,4 @@
|
||||
2022-01-23 idk
|
||||
2023-01-23 idk
|
||||
* Move build scripts to their own directory and make them use correct paths when moved
|
||||
* Add EXTRA to router when generating embedded router jars.
|
||||
|
||||
|
88
config.sh
88
config.sh
@ -5,24 +5,69 @@
|
||||
|
||||
uname=$(uname)
|
||||
|
||||
#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 OpenJDK18
|
||||
# Third-party builders should always override this in config_override.sh
|
||||
if [ -z "$SIGNER" ]; then
|
||||
SIGNER=hankhill19580@gmail.com
|
||||
export SIGNER=hankhill19580@gmail.com
|
||||
fi
|
||||
|
||||
if [ -z "$I2P_LIBS" ]; then
|
||||
if [ -d "$HOME/i2p/lib/" ]; then
|
||||
I2P_LIBS="$HOME/i2p/lib/"
|
||||
fi
|
||||
if [ -d "$LOCALAPPDATA/i2p/lib/" ]; then
|
||||
I2P_LIBS="$LOCALAPPDATA/i2p/lib/"
|
||||
fi
|
||||
if [ -d "/usr/share/i2p/lib/" ]; then
|
||||
I2P_LIBS="/usr/share/i2p/lib/"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$I2P_SNARK_DIR" ]; then
|
||||
if [ -d "$HOME/.i2p/i2psnark" ]; then
|
||||
I2P_SNARK_DIR="$HOME/.i2p/i2psnark"
|
||||
fi
|
||||
if [ -d "$LOCALAPPDATA/i2p/i2psnark/" ]; then
|
||||
I2P_SNARK_DIR="$LOCALAPPDATA/i2p/i2psnark/"
|
||||
fi
|
||||
if [ -d "/var/lib/i2p/i2p-config/i2psnark/" ]; then
|
||||
I2P_SNARK_DIR="/var/lib/i2p/i2p-config/i2psnark/"
|
||||
fi
|
||||
fi
|
||||
|
||||
NSIS_PATH="/c/Program Files (x86)/NSIS/Bin"
|
||||
PATH="$NSIS_PATH:$PATH:$NSIS_PATH/"
|
||||
export PATH="$NSIS_PATH:$PATH:$NSIS_PATH/"
|
||||
|
||||
wget_download(){
|
||||
which powershell && powershell Invoke-WebRequest $@ && return
|
||||
wget $@
|
||||
}
|
||||
|
||||
makensisi(){
|
||||
which makensis && makensis $@ && return
|
||||
which wsl && wsl makensis $@ && return
|
||||
}
|
||||
|
||||
make_make(){
|
||||
which make && make $@ && return
|
||||
which wsl && wsl make $@ && return
|
||||
}
|
||||
|
||||
if [[ -n "$IS_WSL" || -n "$WSL_DISTRO_NAME" ]]; then
|
||||
PATH="/c/Program Files/Java/jdk-19/bin/:$PATH:/c/Program Files/Java/jdk-19/bin/"
|
||||
export PATH="/c/Program Files/Java/jdk-19/bin/:$PATH:/c/Program Files/Java/jdk-19/bin/"
|
||||
JAVA_HOME="/c/Program Files/Java/jdk-19"
|
||||
export JAVA_HOME="/c/Program Files/Java/jdk-19"
|
||||
JAVA_HOME=$(java -XshowSettings:properties -version 2>&1 | findstr "java.home" | sed 's| java.home = ||g')
|
||||
export JAVA_HOME="$JAVA_HOME"
|
||||
PATH="$JAVA_HOME/bin/:$PATH:$JAVA_HOME/bin/"
|
||||
export PATH="$JAVA_HOME/bin/:$PATH:$JAVA_HOME/bin/"
|
||||
HOST=win32
|
||||
export HOST=win32
|
||||
fi
|
||||
|
||||
if [ "${uname}" != "Linux" ]; then
|
||||
PATH="/c/Program Files/Java/jdk-19/bin/:$PATH:/c/Program Files/Java/jdk-19/bin/"
|
||||
export PATH="/c/Program Files/Java/jdk-19/bin/:$PATH:/c/Program Files/Java/jdk-19/bin/"
|
||||
JAVA_HOME="/c/Program Files/Java/jdk-19"
|
||||
export JAVA_HOME="/c/Program Files/Java/jdk-19"
|
||||
JAVA_HOME=$(java -XshowSettings:properties -version 2>&1 | findstr "java.home" | sed 's| java.home = ||g')
|
||||
export JAVA_HOME="$JAVA_HOME"
|
||||
PATH="$JAVA_HOME/bin/:$PATH:$JAVA_HOME/bin/"
|
||||
export PATH="$JAVA_HOME/bin/:$PATH:$JAVA_HOME/bin/"
|
||||
HOST=win32
|
||||
export HOST=win32
|
||||
fi
|
||||
@ -32,10 +77,10 @@ fi
|
||||
## This isn't a default install location, obviously, it's where I unzipped it.
|
||||
## It won't work for you unless you kurtly tell Windows that your name is `user`
|
||||
## every time you make an account, like I do.
|
||||
#PATH="/c/Users/user/Downloads/openjdk-19_windows-x64_bin/jdk-19/bin/:$PATH:/c/Users/user/Downloads/openjdk-19_windows-x64_bin/jdk-19/bin/"
|
||||
#export PATH="/c/Users/user/Downloads/openjdk-19_windows-x64_bin/jdk-19/bin/:$PATH:/c/Users/user/Downloads/openjdk-19_windows-x64_bin/jdk-19/bin/"
|
||||
#JAVA_HOME=/c/Users/user/Downloads/openjdk-19_windows-x64_bin/jdk-19
|
||||
#export JAVA_HOME=/c/Users/user/Downloads/openjdk-19_windows-x64_bin/jdk-19
|
||||
#PATH="/c/Users/user/Downloads/openjdk-20_windows-x64_bin/jdk-20/bin/:$PATH:/c/Users/user/Downloads/openjdk-20_windows-x64_bin/jdk-20/bin/"
|
||||
#export PATH="/c/Users/user/Downloads/openjdk-20_windows-x64_bin/jdk-20/bin/:$PATH:/c/Users/user/Downloads/openjdk-20_windows-x64_bin/jdk-20/bin/"
|
||||
#JAVA_HOME=/c/Users/user/Downloads/openjdk-20_windows-x64_bin/jdk-20
|
||||
#export JAVA_HOME=/c/Users/user/Downloads/openjdk-20_windows-x64_bin/jdk-20
|
||||
|
||||
## Other potential values(NOT exhaustive):
|
||||
|
||||
@ -72,8 +117,17 @@ fi
|
||||
# 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/"
|
||||
if [ -d "/c/apache-ant-"* ]; then
|
||||
ANT_HOME=$(ls -d /c/apache-ant-*)
|
||||
export ANT_HOME="$ANT_HOME"
|
||||
export PATH="$PATH:$ANT_HOME/bin/"
|
||||
fi
|
||||
|
||||
if [ -d "/c/mktorrent"* ]; then
|
||||
MKTORRENT_HOME=$(ls -d /c/mktorrent*)
|
||||
export MKTORRENT_HOME="$MKTORRENT_HOME"
|
||||
export PATH="$PATH:$MKTORRENT_HOME/bin/"
|
||||
fi
|
||||
|
||||
if [[ -n "$IS_WSL" || -n "$WSL_DISTRO_NAME" ]]; then
|
||||
PATH="$PATH:/c/Program Files (x86)/Windows Kits/10/App Certification Kit/"
|
||||
|
25
docs/UPDATES.md
Normal file
25
docs/UPDATES.md
Normal file
@ -0,0 +1,25 @@
|
||||
Setting up an Update Server for an I2P Bundle
|
||||
=============================================
|
||||
|
||||
It is important to set up a signed update server so that people are able to
|
||||
safely and anonymously update your I2P bundle. There are two sort of "Levels"
|
||||
to what you might do to provide updates to your users. Each of them requires the
|
||||
generation of a [signed newsfeed](https://eyedeekay.github.io/Hopefully-Holistic-Guide-to-I2P-Dev-Build-Update-Hosting/),
|
||||
which also serves as a way to provide information to your users about updates,
|
||||
features, and security events.
|
||||
|
||||
This project, `i2p.firefox` a.k.a. the "I2P Easy Install Bundle" uses the "Executable"
|
||||
update subtype, meaning that it capable of installing itself by executing code as the
|
||||
user who runs the update, which is usually the main user of a Windows 10 or 11 PC.
|
||||
This update subtype is highly flexible, but requires the creation of a "Scripted" using
|
||||
something like `NSIS`, `wixl`, or custom code. Other update types include ZIP (used by
|
||||
the core I2P product) and DMG(used by Mac OSX).
|
||||
|
||||
Static HTTP Update URL over I2P
|
||||
===============================
|
||||
|
||||
Bittorrent Update URL over I2P
|
||||
==============================
|
||||
|
||||
[If you choose to do this, consider using zzzot to host your open tracker instead of a normal site](https://github.com/i2p/i2p.plugins.zzzot),
|
||||
which you can obtain from [this I2P link](http://stats.i2p/i2p/plugins/zzzot.su3).
|
10
i2pversion
10
i2pversion
@ -2,14 +2,14 @@
|
||||
|
||||
JNA_VERSION=5.12.1
|
||||
export JNA_VERSION=5.12.1
|
||||
I2PFIREFOX_VERSION=1.0.7
|
||||
export I2PFIREFOX_VERSION=1.0.7
|
||||
I2PFIREFOX_VERSION=1.4.991
|
||||
export I2PFIREFOX_VERSION=1.4.991
|
||||
# Comment this out to build from an alternate branch or
|
||||
# the tip of the master branch.
|
||||
VERSIONMAJOR=2
|
||||
VERSIONMINOR=1
|
||||
VERSIONMINOR=4
|
||||
VERSIONBUILD=0
|
||||
I2P_VERSION="$VERSIONMAJOR.$VERSIONMINOR.$VERSIONBUILD"
|
||||
export I2P_VERSION="$VERSIONMAJOR.$VERSIONMINOR.$VERSIONBUILD"
|
||||
VERSION=i2p-2.1.0
|
||||
export VERSION=i2p-2.1.0
|
||||
VERSION=i2p-2.4.0
|
||||
export VERSION=i2p-2.4.0
|
@ -9,26 +9,14 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.logging.FileHandler;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.logging.SimpleFormatter;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
public class CopyConfigDir extends WindowsServiceUtil {
|
||||
final Logger logger = Logger.getLogger("configlog");
|
||||
public class CopyConfigDir extends WindowsAppUtil {
|
||||
final Log logger;
|
||||
|
||||
public void initLogger() {
|
||||
try {
|
||||
// This block configure the logger with handler and formatter
|
||||
FileHandler 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();
|
||||
}
|
||||
public CopyConfigDir(RouterContext ctx) {
|
||||
logger = ctx.logManager().getLog(CopyConfigDir.class);
|
||||
}
|
||||
|
||||
public boolean copyDirectory(String baseDir, String workDir) {
|
||||
@ -73,7 +61,7 @@ public class CopyConfigDir extends WindowsServiceUtil {
|
||||
try {
|
||||
jpackagedConfigsInUse.createNewFile();
|
||||
} catch (IOException e) {
|
||||
logger.warning(
|
||||
logger.warn(
|
||||
"Error creating jpackaged file, delete config files manually when uninstalling");
|
||||
}
|
||||
}
|
||||
@ -128,164 +116,19 @@ public class CopyConfigDir extends WindowsServiceUtil {
|
||||
out.close();
|
||||
return 1;
|
||||
} catch (Throwable e) {
|
||||
logger.warning(e.toString());
|
||||
logger.warning("failed to copy " + basePath.getAbsolutePath() + " to " +
|
||||
workPath.getAbsolutePath());
|
||||
logger.warn(e.toString());
|
||||
logger.warn("failed to copy " + basePath.getAbsolutePath() + " to " +
|
||||
workPath.getAbsolutePath());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
protected 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);
|
||||
}
|
||||
}
|
||||
File i2p = appImageHome();
|
||||
logger.info("Checking for signs of life in I2P_CONFIG directory: " + i2p);
|
||||
return i2p;
|
||||
}
|
||||
|
||||
protected 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);
|
||||
}
|
||||
}
|
||||
File i2p = appImageHome();
|
||||
logger.info("Checking for signs of life in I2P directory: " + i2p);
|
||||
return i2p;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the path to the java home, for jpackage this is related to the
|
||||
* executable itself, which is handy to know. It's a directory called runtime,
|
||||
* relative to the root of the app-image on each platform:
|
||||
*
|
||||
* Windows - Root of appimage is 1 directory above directory named runtime
|
||||
* ./runtime
|
||||
*
|
||||
* Linux - Root of appimage is 2 directories above directory named runtime
|
||||
* ./lib/runtime
|
||||
*
|
||||
* Mac OSX - Unknown for now
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
protected File javaHome() {
|
||||
File jrehome = new File(System.getProperty("java.home"));
|
||||
if (jrehome != null) {
|
||||
if (jrehome.exists()) {
|
||||
return jrehome;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the path to the root of the app-image root by getting the path to
|
||||
* java.home and the OS, and traversing up to the app-image root based on that
|
||||
* information.
|
||||
*
|
||||
* @return the app-image root
|
||||
*/
|
||||
protected File appImageHome() {
|
||||
File jreHome = javaHome();
|
||||
if (jreHome != null) {
|
||||
switch (osName()) {
|
||||
case "windows":
|
||||
return jreHome.getAbsoluteFile().getParentFile();
|
||||
case "mac":
|
||||
case "linux":
|
||||
return jreHome.getAbsoluteFile().getParentFile().getParentFile();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the path to the binary of the app-image root by getting the path to
|
||||
* java.home and the OS, and traversing up to the app-image root based on that
|
||||
* information, then getting the binary path on a per-platform basis. The path
|
||||
* returned will be relative to the root.
|
||||
*
|
||||
* @return the app-image root
|
||||
*/
|
||||
protected String appImageExe() {
|
||||
File aih = appImageHome();
|
||||
if (aih != null) {
|
||||
switch (osName()) {
|
||||
case "windows":
|
||||
return "I2P.exe";
|
||||
case "mac":
|
||||
case "linux":
|
||||
return "./bin/I2P";
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the path to the default config of the app-image by getting the path to
|
||||
* java.home and the OS, and traversing up to the app-image root based on that
|
||||
* information, then appending the config directory to the end onn a
|
||||
* per-platform basis
|
||||
*
|
||||
* @return the app-image root
|
||||
*/
|
||||
protected File appImageConfig() {
|
||||
File aih = appImageHome();
|
||||
if (aih == null) {
|
||||
return null;
|
||||
}
|
||||
String osName = osName();
|
||||
switch (osName) {
|
||||
case "windows":
|
||||
File winConfigDir = new File(aih, "config");
|
||||
if (winConfigDir != null) {
|
||||
if (winConfigDir.exists()) {
|
||||
return winConfigDir;
|
||||
}
|
||||
}
|
||||
case "mac":
|
||||
case "linux":
|
||||
File linConfigDir = new File(aih, "lib/config");
|
||||
if (linConfigDir != null) {
|
||||
if (linConfigDir.exists()) {
|
||||
return linConfigDir;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected boolean copyConfigDir() {
|
||||
File appImageConfigDir = appImageConfig();
|
||||
File appImageHomeDir = selectHome();
|
||||
return copyConfigDirectory(appImageConfigDir, appImageHomeDir);
|
||||
}
|
||||
|
||||
protected String routerConfig() {
|
||||
File appImageHomeDir = selectHome();
|
||||
File routerConf = new File(appImageHomeDir, "router.config");
|
||||
if (routerConf != null) {
|
||||
if (routerConf.exists()) {
|
||||
return routerConf.getAbsolutePath();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* set up the path to the log file
|
||||
*
|
||||
|
@ -5,18 +5,14 @@ import java.net.InetAddress;
|
||||
import java.net.ServerSocket;
|
||||
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.app.ClientAppManager;
|
||||
import net.i2p.crypto.*;
|
||||
import net.i2p.i2pfirefox.*;
|
||||
import net.i2p.router.Router;
|
||||
import net.i2p.router.RouterLaunch;
|
||||
import net.i2p.update.*;
|
||||
import net.i2p.update.UpdateManager;
|
||||
import net.i2p.update.UpdatePostProcessor;
|
||||
import net.i2p.update.UpdateType.*;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
/**
|
||||
* Launches a router from %WORKINGDIR%/I2P using configuration data in
|
||||
@ -28,65 +24,14 @@ import net.i2p.update.UpdateType.*;
|
||||
* appdata
|
||||
* router.pid - the pid of the java process.
|
||||
*/
|
||||
public class WinLauncher extends CopyConfigDir {
|
||||
WindowsUpdatePostProcessor wupp = null;
|
||||
public class WinLauncher extends WindowsAppUtil {
|
||||
private final CopyConfigDir copyConfigDir;
|
||||
WinUpdatePostProcessor wupp = null;
|
||||
private Router i2pRouter;
|
||||
|
||||
public static void main(String[] args) {
|
||||
var launcher = new WinLauncher();
|
||||
launcher.setupLauncher();
|
||||
launcher.initLogger();
|
||||
int privateBrowsing = 0;
|
||||
boolean usabilityMode = false;
|
||||
boolean chromiumFirst = false;
|
||||
int proxyTimeoutTime = 200;
|
||||
ArrayList<String> newArgsList = new ArrayList<String>();
|
||||
|
||||
if (args != null) {
|
||||
if (args.length > 0) {
|
||||
for (String arg : args) {
|
||||
if (arg.equals("-private")) {
|
||||
privateBrowsing = 1;
|
||||
launcher.logger.info(
|
||||
"Private browsing is true, profile will be discarded at end of session.");
|
||||
} else if (arg.equals("-chromium")) {
|
||||
chromiumFirst = true;
|
||||
launcher.logger.info("Chromium will be selected before Firefox.");
|
||||
} else if (arg.equals("-usability")) {
|
||||
usabilityMode = true;
|
||||
launcher.logger.info(
|
||||
"Usability mode is true, using alternate extensions loadout.");
|
||||
} else if (arg.equals("-noproxycheck")) {
|
||||
proxyTimeoutTime = 0;
|
||||
launcher.logger.info("Proxy timeout time set to zero");
|
||||
} else {
|
||||
// make an effort to not let people launch into sites if the proxy
|
||||
// isn't quite ready yet, but also disable the proxy timeout if
|
||||
// they're reaching a router console
|
||||
if (arg.startsWith("http://localhost:76")) {
|
||||
newArgsList.add(arg);
|
||||
proxyTimeoutTime = 0;
|
||||
} else if (arg.startsWith("http://127.0.0.1:76")) {
|
||||
newArgsList.add(arg);
|
||||
proxyTimeoutTime = 0;
|
||||
} else if (arg.startsWith("https://localhost:76")) {
|
||||
newArgsList.add(arg);
|
||||
proxyTimeoutTime = 0;
|
||||
} else if (arg.startsWith("https://127.0.0.1:76")) {
|
||||
newArgsList.add(arg);
|
||||
proxyTimeoutTime = 0;
|
||||
} else if (proxyTimeoutTime > 0) {
|
||||
newArgsList.add(arg);
|
||||
} else if (!launcher.isAvailable(4444)) {
|
||||
newArgsList.add(arg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File programs = launcher.programFile();
|
||||
File home = launcher.homeDir();
|
||||
private final Log logger;
|
||||
public WinLauncher() {
|
||||
File programs = programFile();
|
||||
File home = homeDir();
|
||||
|
||||
System.setProperty(
|
||||
"i2p.dir.base",
|
||||
@ -101,42 +46,42 @@ public class WinLauncher extends CopyConfigDir {
|
||||
* to find the JVM and Runtime bundle. This broke Windows 11 installs.
|
||||
*/
|
||||
System.setProperty("user.dir", programs.getAbsolutePath());
|
||||
|
||||
i2pRouter = new Router(routerConfig(), System.getProperties());
|
||||
copyConfigDir = new CopyConfigDir(i2pRouter.getContext());
|
||||
logger = i2pRouter.getContext().logManager().getLog(WinLauncher.class);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
var launcher = new WinLauncher();
|
||||
launcher.setupLauncher();
|
||||
int proxyTimeoutTime = 200;
|
||||
|
||||
launcher.logger.info("\t" + System.getProperty("user.dir"));
|
||||
launcher.logger.info("\t" + System.getProperty("i2p.dir.base"));
|
||||
launcher.logger.info("\t" + System.getProperty("i2p.dir.config"));
|
||||
launcher.logger.info("\t" + System.getProperty("router.pid"));
|
||||
boolean continuerunning = launcher.promptServiceStartIfAvailable("i2p");
|
||||
if (!continuerunning) {
|
||||
launcher.logger.severe(
|
||||
launcher.logger.error(
|
||||
"Service startup failure, please start I2P service with services.msc");
|
||||
System.exit(2);
|
||||
}
|
||||
continuerunning = launcher.promptUserInstallStartIfAvailable();
|
||||
if (!continuerunning) {
|
||||
launcher.logger.severe("User-install startup required.");
|
||||
launcher.logger.error("User-install startup required.");
|
||||
System.exit(2);
|
||||
}
|
||||
|
||||
// This actually does most of what we use NSIS for if NSIS hasn't
|
||||
// already done it, which essentially makes this whole thing portable.
|
||||
if (!launcher.copyConfigDir()) {
|
||||
launcher.logger.severe("Cannot copy the configuration directory");
|
||||
if (!launcher.copyConfigDir.copyConfigDir()) {
|
||||
launcher.logger.error("Cannot copy the configuration directory");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
if (launcher.launchBrowser(privateBrowsing, usabilityMode, chromiumFirst,
|
||||
proxyTimeoutTime, newArgsList)) {
|
||||
System.exit(0);
|
||||
}
|
||||
launcher.i2pRouter =
|
||||
new Router(launcher.routerConfig(), System.getProperties());
|
||||
if (!launcher.isInstalled("i2p")) {
|
||||
if (launcher.i2pRouter.saveConfig("routerconsole.browser", null)) {
|
||||
launcher.logger.info("removed routerconsole.browser config");
|
||||
}
|
||||
if (launcher.i2pRouter.saveConfig("routerconsole.browser",
|
||||
launcher.appImageExe() +
|
||||
" -noproxycheck")) {
|
||||
if (launcher.i2pRouter.saveConfig("routerconsole.browser", "NUL")) {
|
||||
launcher.logger.info("updated routerconsole.browser config " +
|
||||
launcher.appImageExe());
|
||||
}
|
||||
@ -148,8 +93,6 @@ public class WinLauncher extends CopyConfigDir {
|
||||
registrationThread.setDaemon(true);
|
||||
registrationThread.start();
|
||||
|
||||
launcher.setNotStarting();
|
||||
|
||||
launcher.i2pRouter.runRouter();
|
||||
}
|
||||
|
||||
@ -165,7 +108,7 @@ public class WinLauncher extends CopyConfigDir {
|
||||
if (!programs.exists())
|
||||
programs.mkdirs();
|
||||
else if (!programs.isDirectory()) {
|
||||
logger.warning(
|
||||
logger.warn(
|
||||
programs +
|
||||
" exists but is not a directory. Please get it out of the way");
|
||||
System.exit(1);
|
||||
@ -178,7 +121,7 @@ public class WinLauncher extends CopyConfigDir {
|
||||
if (!home.exists())
|
||||
home.mkdirs();
|
||||
else if (!home.isDirectory()) {
|
||||
logger.warning(
|
||||
logger.warn(
|
||||
home +
|
||||
" exists but is not a directory. Please get it out of the way");
|
||||
System.exit(1);
|
||||
@ -186,29 +129,6 @@ public class WinLauncher extends CopyConfigDir {
|
||||
return home;
|
||||
}
|
||||
|
||||
private boolean launchBrowser(int privateBrowsing, boolean usabilityMode,
|
||||
boolean chromiumFirst, int proxyTimeoutTime,
|
||||
ArrayList<String> newArgsList) {
|
||||
if (i2pIsRunning()) {
|
||||
logger.info("I2P is already running, launching an I2P browser");
|
||||
I2PBrowser i2pBrowser = new I2PBrowser();
|
||||
i2pBrowser.usability = usabilityMode;
|
||||
i2pBrowser.chromiumFirst = chromiumFirst;
|
||||
i2pBrowser.firefox = !chromiumFirst;
|
||||
i2pBrowser.chromium = chromiumFirst;
|
||||
if (chromiumFirst) {
|
||||
logger.warning("favoring Chromium instead of Firefox");
|
||||
}
|
||||
i2pBrowser.setProxyTimeoutTime(proxyTimeoutTime);
|
||||
System.out.println("I2PBrowser");
|
||||
String[] newArgs = newArgsList.toArray(new String[newArgsList.size()]);
|
||||
setNotStarting();
|
||||
i2pBrowser.launch(privateBrowsing, newArgs);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// see
|
||||
// https://stackoverflow.com/questions/434718/sockets-discover-port-availability-using-java
|
||||
private boolean isAvailable(int portNr) {
|
||||
@ -221,93 +141,6 @@ public class WinLauncher extends CopyConfigDir {
|
||||
return portFree;
|
||||
}
|
||||
|
||||
private boolean i2pIsRunningCheck() {
|
||||
// check if there's something listening on port 7657(Router Console)
|
||||
if (!isAvailable(7657))
|
||||
return true;
|
||||
// check if there's something listening on port 7654(I2CP)
|
||||
if (!isAvailable(7654))
|
||||
return true;
|
||||
if (checkPing())
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
private void setNotStarting() {
|
||||
logger.info("removing startup file, the application has started");
|
||||
File home = selectHome();
|
||||
File starting = new File(home, "starting");
|
||||
if (starting.exists()) {
|
||||
starting.delete();
|
||||
}
|
||||
}
|
||||
|
||||
private void setStarting() {
|
||||
logger.info("creating startup file, router is starting up");
|
||||
File home = selectHome();
|
||||
File starting = new File(home, "starting");
|
||||
if (!starting.exists()) {
|
||||
try {
|
||||
starting.createNewFile();
|
||||
} catch (IOException e) {
|
||||
logger.info(e.toString());
|
||||
}
|
||||
}
|
||||
Runtime.getRuntime().addShutdownHook(new Thread() {
|
||||
@Override
|
||||
public void run() {
|
||||
setNotStarting();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private boolean checkStarting() {
|
||||
logger.info("checking startup file");
|
||||
File home = selectHome();
|
||||
File starting = new File(home, "starting");
|
||||
if (starting.exists()) {
|
||||
logger.info("startup file exists, I2P is already starting up");
|
||||
return true;
|
||||
}
|
||||
logger.info("startup file does not exist but we're running now");
|
||||
setStarting();
|
||||
return false;
|
||||
}
|
||||
|
||||
// check for the existence of router.ping file, if it's less then 2
|
||||
// minutes old, exit
|
||||
private boolean checkPing() {
|
||||
File home = selectHome();
|
||||
File ping = new File(home, "router.ping");
|
||||
if (ping.exists()) {
|
||||
long diff = System.currentTimeMillis() - ping.lastModified();
|
||||
if (diff > 60 * 1000) {
|
||||
logger.info(
|
||||
"router.ping exists and is more than 1 minute old, I2P does not appear to be running.");
|
||||
logger.info("If I2P is running, report this as a bug.");
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean i2pIsRunning() {
|
||||
if (checkStarting())
|
||||
return true;
|
||||
if (checkPing())
|
||||
return true;
|
||||
if (i2pIsRunningCheck())
|
||||
return true;
|
||||
for (int i = 0; i < 10; i++) {
|
||||
if (i2pIsRunningCheck())
|
||||
return true;
|
||||
sleep(1000);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private final Runnable REGISTER_UPP = () -> {
|
||||
RouterContext ctx;
|
||||
while ((ctx = i2pRouter.getContext()) == null) {
|
||||
@ -323,7 +156,7 @@ public class WinLauncher extends CopyConfigDir {
|
||||
null) {
|
||||
sleep(1000);
|
||||
}
|
||||
WindowsUpdatePostProcessor wupp = new WindowsUpdatePostProcessor(ctx);
|
||||
WinUpdatePostProcessor wupp = new WinUpdatePostProcessor(ctx);
|
||||
um.register(wupp, UpdateType.ROUTER_SIGNED_SU3, SU3File.TYPE_EXE);
|
||||
um.register(wupp, UpdateType.ROUTER_DEV_SU3, SU3File.TYPE_EXE);
|
||||
};
|
||||
|
@ -16,7 +16,7 @@ import net.i2p.update.UpdateType;
|
||||
import net.i2p.util.Log;
|
||||
import net.i2p.util.SystemVersion;
|
||||
|
||||
public class WindowsUpdatePostProcessor implements UpdatePostProcessor {
|
||||
public class WinUpdatePostProcessor implements UpdatePostProcessor {
|
||||
private final Log _log;
|
||||
private final RouterContext ctx;
|
||||
private final AtomicBoolean hook = new AtomicBoolean();
|
||||
@ -26,9 +26,9 @@ public class WindowsUpdatePostProcessor implements UpdatePostProcessor {
|
||||
|
||||
private volatile File positionedFile = null;
|
||||
|
||||
WindowsUpdatePostProcessor(RouterContext ctx) {
|
||||
WinUpdatePostProcessor(RouterContext ctx) {
|
||||
this.ctx = ctx;
|
||||
this._log = ctx.logManager().getLog(WindowsUpdatePostProcessor.class);
|
||||
this._log = ctx.logManager().getLog(WinUpdatePostProcessor.class);
|
||||
}
|
||||
|
||||
public String getVersion() { return version; }
|
148
java/net/i2p/router/WindowsAppUtil.java
Normal file
148
java/net/i2p/router/WindowsAppUtil.java
Normal file
@ -0,0 +1,148 @@
|
||||
package net.i2p.router;
|
||||
|
||||
import java.io.File;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
public class WindowsAppUtil extends WindowsServiceUtil {
|
||||
private File checkPathEnvironmentVariable(String name) {
|
||||
String path_override = System.getenv(name);
|
||||
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(name + " is not a directory: " + path);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected File selectHome() { // throws Exception {
|
||||
File i2p = checkPathEnvironmentVariable("I2P_CONFIG");
|
||||
String path_override = System.getenv("I2P_CONFIG");
|
||||
if (i2p == null)
|
||||
i2p = appImageHome();
|
||||
return i2p;
|
||||
}
|
||||
|
||||
protected File selectProgramFile() {
|
||||
File i2p = checkPathEnvironmentVariable("I2P");
|
||||
if (i2p == null)
|
||||
i2p = appImageHome();
|
||||
return i2p;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the path to the java home, for jpackage this is related to the
|
||||
* executable itself, which is handy to know. It's a directory called runtime,
|
||||
* relative to the root of the app-image on each platform:
|
||||
*
|
||||
* Windows - Root of appimage is 1 directory above directory named runtime
|
||||
* ./runtime
|
||||
*
|
||||
* Linux - Root of appimage is 2 directories above directory named runtime
|
||||
* ./lib/runtime
|
||||
*
|
||||
* Mac OSX - Unknown for now
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
protected File javaHome() {
|
||||
File jrehome = new File(System.getProperty("java.home"));
|
||||
if (jrehome != null) {
|
||||
if (jrehome.exists()) {
|
||||
return jrehome;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the path to the root of the app-image root by getting the path to
|
||||
* java.home and the OS, and traversing up to the app-image root based on that
|
||||
* information.
|
||||
*
|
||||
* @return the app-image root
|
||||
*/
|
||||
protected File appImageHome() {
|
||||
File jreHome = javaHome();
|
||||
if (jreHome != null) {
|
||||
switch (osName()) {
|
||||
case "windows":
|
||||
return jreHome.getAbsoluteFile().getParentFile();
|
||||
case "mac":
|
||||
case "linux":
|
||||
return jreHome.getAbsoluteFile().getParentFile().getParentFile();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the path to the binary of the app-image root by getting the path to
|
||||
* java.home and the OS, and traversing up to the app-image root based on that
|
||||
* information, then getting the binary path on a per-platform basis. The path
|
||||
* returned will be relative to the root.
|
||||
*
|
||||
* @return the app-image root
|
||||
*/
|
||||
protected String appImageExe() {
|
||||
File aih = appImageHome();
|
||||
if (aih != null) {
|
||||
switch (osName()) {
|
||||
case "windows":
|
||||
return "I2P.exe";
|
||||
case "mac":
|
||||
case "linux":
|
||||
return "./bin/I2P";
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the path to the default config of the app-image by getting the path to
|
||||
* java.home and the OS, and traversing up to the app-image root based on that
|
||||
* information, then appending the config directory to the end onn a
|
||||
* per-platform basis
|
||||
*
|
||||
* @return the app-image root
|
||||
*/
|
||||
protected File appImageConfig() {
|
||||
File aih = appImageHome();
|
||||
if (aih == null) {
|
||||
return null;
|
||||
}
|
||||
String osName = osName();
|
||||
switch (osName) {
|
||||
case "windows":
|
||||
File winConfigDir = new File(aih, "config");
|
||||
if (winConfigDir != null) {
|
||||
if (winConfigDir.exists()) {
|
||||
return winConfigDir;
|
||||
}
|
||||
}
|
||||
case "mac":
|
||||
case "linux":
|
||||
File linConfigDir = new File(aih, "lib/config");
|
||||
if (linConfigDir != null) {
|
||||
if (linConfigDir.exists()) {
|
||||
return linConfigDir;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected String routerConfig() {
|
||||
File appImageHomeDir = selectHome();
|
||||
File routerConf = new File(appImageHomeDir, "router.config");
|
||||
if (routerConf != null) {
|
||||
if (routerConf.exists()) {
|
||||
return routerConf.getAbsolutePath();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -260,7 +260,7 @@ public class WindowsServiceUtil {
|
||||
*
|
||||
* @return os name in lower-case, "windows" "mac" or "linux"
|
||||
*/
|
||||
protected static String osName() {
|
||||
protected String osName() {
|
||||
String osName = System.getProperty("os.name").toLowerCase();
|
||||
if (osName.contains("windows"))
|
||||
return "windows";
|
||||
|
@ -1,35 +0,0 @@
|
||||
|
||||
prepupdate-unsignedexe:
|
||||
cp -v "I2P-Profile-Installer-$(PROFILE_VERSION).su3" i2pwinupdate-unsignedexe.su3
|
||||
|
||||
su3-unsignedexe: $(GOPATH)/src/i2pgit.org/idk/su3-tools/su3-tools
|
||||
$(GOPATH)/src/i2pgit.org/idk/su3-tools/su3-tools -name "I2P-Profile-Installer-$(PROFILE_VERSION)" -signer "$(SIGNER)" -version "$(I2P_VERSION)"
|
||||
java -cp "$(HOME)/i2p/lib/*" net.i2p.crypto.SU3File sign -c ROUTER -f EXE I2P-Profile-Installer-$(PROFILE_VERSION).exe I2P-Profile-Installer-$(PROFILE_VERSION)-signed.su3 "$(HOME)/.i2p-plugin-keys/news-su3-keystore.ks" "$(I2P_VERSION)" $(SIGNER)
|
||||
|
||||
i2pwinupdate-unsignedexe.su3.torrent: prepupdate-unsignedexe su3-unsignedexe
|
||||
mktorrent \
|
||||
--announce=http://tracker2.postman.i2p/announce.php \
|
||||
--announce=http://w7tpbzncbcocrqtwwm3nezhnnsw4ozadvi2hmvzdhrqzfxfum7wa.b32.i2p/a \
|
||||
--announce=http://mb5ir7klpc2tj6ha3xhmrs3mseqvanauciuoiamx2mmzujvg67uq.b32.i2p/a \
|
||||
i2pwinupdate-unsignedexe.su3
|
||||
|
||||
torrent-unsignedexe: i2pwinupdate-unsignedexe.su3.torrent
|
||||
|
||||
testing-releases.json: torrent-unsignedexe
|
||||
mkdir -p ../i2p.newsxml/data/win/testing/
|
||||
@echo "[" | tee ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " {" | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " \"date\": \"$(I2P_DATE)\"," | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " \"version\": \"$(I2P_VERSION)\"," | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " \"minVersion\": \"1.5.0\"," | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " \"minJavaVersion\": \"1.8\"," | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " \"updates\": {" | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " \"su3\": {" | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " \"torrent\": \"$(MAGNET_TESTING)\"," | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " \"url\": [" | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " \"http://ekm3fu6fr5pxudhwjmdiea5dovc3jdi66hjgop4c7z7dfaw7spca.b32.i2p/i2pwinupdate.su3\"" | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " ]" | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " }" | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " }" | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo " }" | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
||||
@echo "]" | tee -a ../i2p.newsxml/data/win/testing/releases.json
|
@ -1,41 +0,0 @@
|
||||
GOPATH=$(HOME)/go
|
||||
|
||||
$(GOPATH)/src/i2pgit.org/idk/su3-tools/su3-tools:
|
||||
git clone https://i2pgit.org/idk/su3-tools $(GOPATH)/src/i2pgit.org/idk/su3-tools; true
|
||||
git pull --all
|
||||
cd $(GOPATH)/src/i2pgit.org/idk/su3-tools && \
|
||||
go mod vendor && go build
|
||||
|
||||
prepupdate:
|
||||
cp -v "I2P-Easy-Install-Bundle-$(PROFILE_VERSION)-signed.su3" i2pwinupdate.su3
|
||||
|
||||
su3: $(GOPATH)/src/i2pgit.org/idk/su3-tools/su3-tools
|
||||
$(GOPATH)/src/i2pgit.org/idk/su3-tools/su3-tools -name "I2P-Easy-Install-Bundle-$(PROFILE_VERSION)-signed" -signer "$(SIGNER)" -version "$(PROFILE_VERSION)"
|
||||
java -cp "$(HOME)/i2p/lib/*" net.i2p.crypto.SU3File sign -c ROUTER -f EXE I2P-Easy-Install-Bundle-$(PROFILE_VERSION)-signed.exe I2P-Easy-Install-Bundle-$(PROFILE_VERSION)-signed.su3 "$(HOME)/.i2p-plugin-keys/news-su3-keystore.ks" $(PROFILE_VERSION) $(SIGNER)
|
||||
|
||||
i2pwinupdate.su3.torrent: prepupdate su3
|
||||
mktorrent \
|
||||
--announce=http://tracker2.postman.i2p/announce.php \
|
||||
--announce=http://w7tpbzncbcocrqtwwm3nezhnnsw4ozadvi2hmvzdhrqzfxfum7wa.b32.i2p/a \
|
||||
--announce=http://mb5ir7klpc2tj6ha3xhmrs3mseqvanauciuoiamx2mmzujvg67uq.b32.i2p/a \
|
||||
i2pwinupdate.su3
|
||||
|
||||
torrent: i2pwinupdate.su3.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\": \"$(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
|
||||
@echo " \"su3\": {" | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " \"torrent\": \"$(MAGNET)\"," | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " \"url\": [" | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " \"http://ekm3fu6fr5pxudhwjmdiea5dovc3jdi66hjgop4c7z7dfaw7spca.b32.i2p/i2pwinupdate.su3\"" | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " ]" | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " }" | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " }" | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo " }" | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
||||
@echo "]" | tee -a ../i2p.newsxml/data/win/beta/releases.json
|
@ -10,7 +10,6 @@ UniCode true
|
||||
!define CONSOLE_URL "http://127.0.0.1:7657/home"
|
||||
|
||||
!include i2pbrowser-version.nsi
|
||||
!include i2pbrowser-jpackage.nsi
|
||||
!include FindProcess.nsh
|
||||
|
||||
#var INSTDIR
|
||||
@ -152,8 +151,8 @@ Function routerDetect
|
||||
|
||||
createDirectory "$INSTDIR\"
|
||||
SetOutPath "$INSTDIR\"
|
||||
File /a /r "I2P/config/certificates"
|
||||
File /a /r "I2P/config/geoip"
|
||||
File /a /r "I2P\config\certificates\"
|
||||
File /a /r "I2P\config\geoip\"
|
||||
FunctionEnd
|
||||
|
||||
Function installerFunction
|
||||
@ -178,15 +177,17 @@ Function installerFunction
|
||||
# Install the licenses
|
||||
createDirectory "$INSTDIR\licenses"
|
||||
SetOutPath "$INSTDIR\licenses"
|
||||
File /a /r "licenses/*"
|
||||
File /a /r "licenses\"
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
createDirectory "$SMPROGRAMS\${APPNAME}"
|
||||
|
||||
CreateShortCut "$SMPROGRAMS\${APPNAME}\Browse I2P.lnk" "$INSTDIR\I2P.exe" "" "$INSTDIR\ui2pbrowser_icon.ico"
|
||||
CreateShortCut "$SMPROGRAMS\${APPNAME}\Browse I2P - Temporary Identity.lnk" "$INSTDIR\I2P.exe -private" "" "$INSTDIR\ui2pbrowser_icon.ico"
|
||||
Delete "$SMPROGRAMS\${APPNAME}\Browse I2P - Temporary Identity.lnk"
|
||||
|
||||
CreateShortCut "$DESKTOP\Browse I2P.lnk" "$INSTDIR\I2P.exe" "" "$INSTDIR\ui2pbrowser_icon.ico"
|
||||
CreateShortCut "$DESKTOP\Browse I2P - Temporary Identity.lnk" "$INSTDIR\I2P.exe -private" "" "$INSTDIR\ui2pbrowser_icon.ico"
|
||||
Delete "$DESKTOP\Browse I2P - Temporary Identity.lnk"
|
||||
|
||||
CreateShortCut "$SMPROGRAMS\${APPNAME}\Uninstall I2P Easy-Install Bundle.lnk" "$INSTDIR\uninstall-i2pbrowser.exe" "" "$INSTDIR\ui2pbrowser_icon.ico"
|
||||
SetOutPath "$INSTDIR"
|
||||
|
||||
@ -275,21 +276,9 @@ Function LaunchLink
|
||||
${If} ${Silent}
|
||||
ReadEnvStr $0 RESTART_I2P
|
||||
${If} $0 != ""
|
||||
UserInfo::GetAccountType
|
||||
pop $0
|
||||
${If} $0 == "admin"
|
||||
ShellExecAsUser::ShellExecAsUser "open" "$DESKTOP\Browse I2P.lnk"
|
||||
${Else}
|
||||
ExecShell "" "$DESKTOP\Browse I2P.lnk"
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
${Else}
|
||||
UserInfo::GetAccountType
|
||||
pop $0
|
||||
${If} $0 == "admin"
|
||||
ShellExecAsUser::ShellExecAsUser "open" "$DESKTOP\Browse I2P.lnk"
|
||||
${Else}
|
||||
ExecShell "" "$DESKTOP\Browse I2P.lnk"
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
|
@ -1 +0,0 @@
|
||||
!define I2P_VERSION
|
@ -1,3 +1,3 @@
|
||||
!define VERSIONMAJOR 2
|
||||
!define VERSIONMINOR 1
|
||||
!define VERSIONMINOR 4
|
||||
!define VERSIONBUILD 0
|
||||
|
@ -18,10 +18,11 @@ if [ ! -f ./tor.keyring ]; then
|
||||
fi
|
||||
|
||||
if [ ! -f "tor-browser-linux64-${version}_${locale}.tar.xz" ]; then
|
||||
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/tor-browser-linux64-${version}_${locale}.tar.xz"
|
||||
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/tor-browser-linux64-${version}_${locale}.tar.xz.asc"
|
||||
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/tor-browser-linux-x86_64-${version}.tar.xz"
|
||||
https://dist.torproject.org/torbrowser/13.0.9/
|
||||
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/tor-browser-linux-x86_64-${version}.tar.xz.asc"
|
||||
fi
|
||||
|
||||
gpgv --keyring ./tor.keyring "tor-browser-linux64-${version}_${locale}.tar.xz.asc" "tor-browser-linux64-${version}_${locale}.tar.xz"
|
||||
gpgv --keyring ./tor.keyring "tor-browser-linux-x86_64-${version}.tar.xz.asc" "tor-browser-linux-x86_64-${version}.tar.xz"
|
||||
|
||||
tar xvJf "tor-browser-linux64-${version}_${locale}.tar.xz"
|
||||
tar xvJf "tor-browser-linux-x86_64-${version}.tar.xz"
|
||||
|
@ -18,21 +18,11 @@ if [ ! -f ./tor.keyring ]; then
|
||||
fi
|
||||
|
||||
if [ ! -f "tor-browser-linux64-${version}_${locale}.exe" ]; then
|
||||
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/torbrowser-install-win64-${version}_${locale}.exe"
|
||||
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/torbrowser-install-win64-${version}_${locale}.exe.asc"
|
||||
wget -cv "https://dist.torproject.org/torbrowser/${version}/tor-browser-windows-x86_64-portable-${version}.exe"
|
||||
wget -cv "https://dist.torproject.org/torbrowser/${version}/tor-browser-windows-x86_64-portable-${version}.exe.asc"
|
||||
fi
|
||||
|
||||
gpgv --keyring ./tor.keyring "torbrowser-install-win64-${version}_${locale}.exe.asc" "torbrowser-install-win64-${version}_${locale}.exe"
|
||||
gpgv --keyring ./tor.keyring "tor-browser-windows-x86_64-portable-${version}.exe.asc" "tor-browser-windows-x86_64-portable-${version}.exe"
|
||||
|
||||
#tar xvJf "torbrowser-install-win64-${version}_${locale}.exe"
|
||||
#for n in `seq 1 2000`; do echo $n; dd ibs=256 if="torbrowser-install-win64-${version}_${locale}.exe" count=2 skip=$n | file - ; done 2>/dev/null |less
|
||||
#zip -FF "torbrowser-install-win64-${version}_${locale}.exe" --out extracted.zip
|
||||
WINE=$(which wine)
|
||||
if [ -z "$WINE" ]; then
|
||||
"./torbrowser-install-win64-${version}_${locale}.exe" /S #/D .
|
||||
cp -vr "$HOME/Desktop/Tor Browser/" "Tor Browser"
|
||||
else
|
||||
export WINEPREFIX=$(pwd)/../tmp
|
||||
$WINE "torbrowser-install-win64-${version}_${locale}.exe" /S #/D .
|
||||
cp -vr "$WINEPREFIX/drive_c/users/idk/Desktop/Tor Browser/" "Tor Browser"
|
||||
fi
|
||||
7z x "tor-browser-windows-x86_64-portable-${version}.exe" -o"Tor Browser"
|
||||
#7z --help
|
Reference in New Issue
Block a user