Compare commits
57 Commits
android-0.
...
android-0.
Author | SHA1 | Date | |
---|---|---|---|
f69f748064 | |||
640a2e1918 | |||
8aead91700 | |||
b18a2e6241 | |||
09c3e6e12c | |||
74bf0eade2 | |||
2fa6e7f3cb | |||
24b741be1e | |||
ac8ce6f916 | |||
cd7d0ad723 | |||
c5a0c3608d | |||
3863c0e183 | |||
69ea3d8bde | |||
7cafe6da48 | |||
9464b46ad0 | |||
c230a5a101 | |||
3d37f2ae07 | |||
f88aafe292 | |||
aa2dab1d3c | |||
8e85eaa2f0 | |||
6a1848caf6 | |||
aa36b4cb14 | |||
78d4b12142 | |||
c2f3a80dec | |||
a679784aab | |||
835667437b | |||
f016edec7a | |||
1e3b517219 | |||
f4e3b15fcf | |||
fc4154be67 | |||
5bf0b18767 | |||
eb5ef3129b | |||
6e87d248c0 | |||
c9b0aff142 | |||
5acac0dbc4 | |||
0b42a7ee64 | |||
c3a798ee3d | |||
e682369311 | |||
14b953f145 | |||
036c807d6b | |||
a41fca95df | |||
26fdf40f25 | |||
070af6529c | |||
7ba0892351 | |||
5b9cdb9f9f | |||
b79d39a74a | |||
5fc5aed0c9 | |||
aec25ab374 | |||
9d5c495936 | |||
4dc2bb6b01 | |||
373e013911 | |||
83bb7096a7 | |||
69ad581235 | |||
4be227631d | |||
3f3f1f8e3d | |||
22290da1a4 | |||
a523e1cb4a |
52
.mtn-ignore
52
.mtn-ignore
@ -1,52 +0,0 @@
|
|||||||
# Just to try and prevent some noob disasters.
|
|
||||||
# Use mtn add --no-respect-ignore foo.jar to ignore this ignore list
|
|
||||||
_jsp\.java$
|
|
||||||
\.bz2$
|
|
||||||
\.class$
|
|
||||||
\.diff$
|
|
||||||
\.exe$
|
|
||||||
\.fba$
|
|
||||||
\.gz$
|
|
||||||
\.jar$
|
|
||||||
\.out$
|
|
||||||
\.patch$
|
|
||||||
\.sig$
|
|
||||||
\.sud$
|
|
||||||
\.su2$
|
|
||||||
\.tar$
|
|
||||||
\.war$
|
|
||||||
\.zip$
|
|
||||||
^\.
|
|
||||||
^build/
|
|
||||||
^pkg-temp/
|
|
||||||
~$
|
|
||||||
/build/
|
|
||||||
/classes/
|
|
||||||
|
|
||||||
# Android-specific ignores
|
|
||||||
^lib/client/libs
|
|
||||||
^routerjars/libs
|
|
||||||
local.properties
|
|
||||||
signing.properties
|
|
||||||
|
|
||||||
#IntelliJ IDEA
|
|
||||||
^.idea
|
|
||||||
.*.iml
|
|
||||||
.*.ipr
|
|
||||||
.*.iws
|
|
||||||
|
|
||||||
#Gradle
|
|
||||||
build
|
|
||||||
|
|
||||||
# I2P-specific ignores
|
|
||||||
^app/src/main/res/drawable/i2plogo.png
|
|
||||||
^app/src/main/res/raw/blocklist_txt
|
|
||||||
^app/src/main/res/raw/hosts_txt
|
|
||||||
^app/src/main/res/raw/.*_ht
|
|
||||||
^app/src/main/res/raw/license_
|
|
||||||
^app/src/main/res/raw/certificates_zip
|
|
||||||
^app/src/main/assets/themes/console/images
|
|
||||||
^app/src/main/assets/themes/console/light/console.css
|
|
||||||
^app/src/main/assets/themes/console/light/images/header.png
|
|
||||||
^scripts/build.number
|
|
||||||
^scripts/version.properties
|
|
20
CHANGELOG
20
CHANGELOG
@ -1,3 +1,23 @@
|
|||||||
|
0.9.50 2021-05-18
|
||||||
|
* This release updates the underlying I2P libraries to I2P version 0.9.50
|
||||||
|
|
||||||
|
0.9.48 2020-12-02
|
||||||
|
* This release updates the underlying I2P libraries to I2P version 0.9.48
|
||||||
|
* Updates to browser configuration documentation
|
||||||
|
|
||||||
|
0.9.47-1 2020-10-29
|
||||||
|
* This release fixes a number of bugs arising from a misconfigured bootclasspath
|
||||||
|
* Fix a battery-management issue arising on some phones
|
||||||
|
|
||||||
|
0.9.47 / 2020-08-26
|
||||||
|
* Notification bug-fixes on platforms >8.0
|
||||||
|
|
||||||
|
0.9.46 / 2020-06-03
|
||||||
|
* catch ActivityNotFound exception in MainActivity
|
||||||
|
|
||||||
|
0.9.45 / 2020-03-07
|
||||||
|
* No significant changes
|
||||||
|
|
||||||
0.9.44 / 2019-12-03
|
0.9.44 / 2019-12-03
|
||||||
* Updated translations
|
* Updated translations
|
||||||
* Bumped target sdk version to 28, enforced by google
|
* Bumped target sdk version to 28, enforced by google
|
||||||
|
91
DOCKER.md
Normal file
91
DOCKER.md
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
Docker Build Instructions
|
||||||
|
=========================
|
||||||
|
|
||||||
|
It is possible to build a container with a pre-installed environment for
|
||||||
|
correctly compiling an I2P for Android development build. Unlike the i2p.i2p
|
||||||
|
container, zero attempt has been made to optimize the size of the container,
|
||||||
|
as it contains a copy of the latest Android SDK, toolchains, and Android NDK,
|
||||||
|
which it must download. To save time, this is cached locally. It is likely to
|
||||||
|
take up to 30 GB of disk space to compile in this way, however, it is very easy
|
||||||
|
and convenient compared to the steps in RELEASE-PROCESS.md and may make
|
||||||
|
building Android reproducibly easier in the future.
|
||||||
|
|
||||||
|
Container dependencies
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
- `menny/android_ndk` (third-party image) (reviewed by idk) (depends on menny/android_sdk
|
||||||
|
- `menny/android_sdk` (third-party image) (reviewed by idk) (depends on ubuntu/18.04)
|
||||||
|
- `ubuntu/18.04` (official docker container) (base container)
|
||||||
|
|
||||||
|
Build the container locally
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Run:
|
||||||
|
|
||||||
|
docker build -t i2p.android.base .
|
||||||
|
|
||||||
|
To build the container. It will have a lot to download the first time, so it may take
|
||||||
|
a while to complete.
|
||||||
|
|
||||||
|
Run an Android build in the container
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
Copy the `etc/docker.signing.example.proprties` file to `etc/docker.signing.proprties`,
|
||||||
|
edit it to match your key information and rebuild the container.
|
||||||
|
|
||||||
|
Run:
|
||||||
|
|
||||||
|
docker run -it \
|
||||||
|
-u $(id -u):$(id -g) \
|
||||||
|
--name i2p.android.base \
|
||||||
|
-v $HOME/.gnupg/:/.gnupg/:ro \
|
||||||
|
-v $HOME/.i2p-plugin-keys/:/.i2p-plugin-keys/:ro \
|
||||||
|
-v /run/user/$(id -u)/:/run/user/$(id -u)/:ro \
|
||||||
|
i2p.android.base
|
||||||
|
|
||||||
|
To get the build artifacts for uploading to Maven out of the container, use:
|
||||||
|
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/pkg-mavencentral app/pkg-mavencentral
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-i2p.jar app/pkg-mavencentral
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-mstreaming.jar app/pkg-mavencentral
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-router.jar app/pkg-mavencentral
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-servlet-i2p.jar app/pkg-mavencentral
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-streaming.jar app/pkg-mavencentral
|
||||||
|
|
||||||
|
To get the Android build artifacts out of the container, use:
|
||||||
|
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.android.base/app/build/ app/build
|
||||||
|
|
||||||
|
And your android applications will appear in the `app/build` directory, in the same
|
||||||
|
place where non-container builds would go.
|
||||||
|
|
||||||
|
If you encounter a permissions error when rebuilding, delete the `app/build`,
|
||||||
|
`app/pkg-mavencentral` and `app/pkg-temp` path.
|
||||||
|
|
||||||
|
rm -rf app/pkg-temp app/build app/pkg-mavencentral
|
||||||
|
|
||||||
|
Copypasta
|
||||||
|
---------
|
||||||
|
|
||||||
|
Once you have set up builds for the first time, from then on you can update the container and
|
||||||
|
build a fresh set of Maven jars and a new I2P for Android app by copy-pasting the following
|
||||||
|
commands:
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
rm -rf app/pkg-temp app/build app/pkg-mavencentral
|
||||||
|
docker build -t i2p.android.base .
|
||||||
|
docker run -it \
|
||||||
|
-u $(id -u):$(id -g) \
|
||||||
|
--name i2p.android.base \
|
||||||
|
-v $HOME/.gnupg/:/.gnupg/:ro \
|
||||||
|
-v $HOME/.i2p-plugin-keys/:/.i2p-plugin-keys/:ro \
|
||||||
|
-v /run/user/$(id -u)/:/run/user/$(id -u)/:ro \
|
||||||
|
i2p.android.base
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/pkg-mavencentral app/pkg-mavencentral
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-i2p.jar app/pkg-mavencentral
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-mstreaming.jar app/pkg-mavencentral
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-router.jar app/pkg-mavencentral
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-servlet-i2p.jar app/pkg-mavencentral
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.i2p/mavencentral-streaming.jar app/pkg-mavencentral
|
||||||
|
docker cp i2p.android.base:/opt/workspace/i2p.android.base/app/build/ app/build
|
||||||
|
```
|
39
Dockerfile
Normal file
39
Dockerfile
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
FROM menny/android_ndk
|
||||||
|
ENV VERSION=0.9.50
|
||||||
|
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
|
||||||
|
RUN echo 'deb https://deb.i2p2.de/ sid main' >> /etc/apt/sources.list
|
||||||
|
RUN echo 'deb-src https://deb.i2p2.de/ sid main' >> /etc/apt/sources.list
|
||||||
|
RUN echo 'deb http://archive.ubuntu.com/ubuntu trusty universe' >> /etc/apt/sources.list
|
||||||
|
RUN wget -O /etc/apt/trusted.gpg.d/i2p-debian-repo.key.asc https://geti2p.net/_static/i2p-debian-repo.key.asc
|
||||||
|
COPY etc/debian-jessie-repo.key.asc /etc/apt/trusted.gpg.d
|
||||||
|
RUN mkdir -p /opt/packages && wget -O /opt/packages/openjdk-7-jre-headless.deb http://security.debian.org/debian-security/pool/updates/main/o/openjdk-7/openjdk-7-jre-headless_7u261-2.6.22-1~deb8u1_amd64.deb
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get build-dep -y i2p i2p-router
|
||||||
|
RUN apt-get install -y ant openjdk-8* libxml2-utils junit4 libhamcrest-java libmockito-java libmaven-ant-tasks-java dpkg-sig maven
|
||||||
|
RUN cd /opt/packages && dpkg-sig -l openjdk-7-jre-headless.deb && dpkg -x openjdk-7-jre-headless.deb /opt/packages/openjdk-7-jre
|
||||||
|
RUN git clone https://i2pgit.org/i2p-hackers/i2p.i2p --depth=1 -b i2p-$VERSION /opt/workspace/i2p.i2p
|
||||||
|
RUN update-java-alternatives --jre-headless --set java-1.8.0-openjdk-amd64
|
||||||
|
RUN update-java-alternatives --set java-1.8.0-openjdk-amd64
|
||||||
|
RUN update-alternatives --set javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
|
||||||
|
RUN update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
|
||||||
|
RUN rm /opt/java/openjdk/ -rfv
|
||||||
|
COPY . /opt/workspace/i2p.android.base
|
||||||
|
COPY etc/docker.local.ndk.properties /opt/workspace/i2p.android.base/client/local.properties
|
||||||
|
COPY etc/docker.local.router.properties /opt/workspace/i2p.android.base/routerjars/local.properties
|
||||||
|
COPY etc/docker.local.sdk.properties /opt/workspace/i2p.android.base/local.properties
|
||||||
|
COPY etc/docker.override.properties /opt/workspace/i2p.android.base/override.properties
|
||||||
|
COPY etc/docker.override.properties /opt/workspace/i2p.i2p/override.properties
|
||||||
|
COPY etc/docker.signing.properties /opt/workspace/i2p.android.base/signing.properties
|
||||||
|
WORKDIR /opt/workspace/i2p.android.base
|
||||||
|
RUN find /opt/android-sdk-linux -type d -print0 | xargs -0 chown -R 1000:1000
|
||||||
|
RUN find /opt/android-sdk-linux -type d -print0 | xargs -0 chmod -Rc o+rw
|
||||||
|
RUN find /opt/android-sdk-linux -type d -print0 | xargs -0 chmod -c 0755
|
||||||
|
RUN find /opt/workspace -type d -print0 | xargs -0 chown -R 1000:1000
|
||||||
|
RUN find /opt/workspace -type d -print0 | xargs -0 chmod -Rc o+rw
|
||||||
|
RUN find /opt/workspace -type d -print0 | xargs -0 chmod -c 0755
|
||||||
|
CMD cd /opt/workspace/i2p.i2p && \
|
||||||
|
ant -k mavenCentral; \
|
||||||
|
cp -v *.jar pkg-mavencentral/; \
|
||||||
|
cd /opt/workspace/i2p.android.base && \
|
||||||
|
./gradlew --continue dependencies || true ; \
|
||||||
|
./gradlew --continue assembleRelease
|
@ -1,59 +1,120 @@
|
|||||||
# Release Process
|
# Release Process
|
||||||
|
|
||||||
|
Note to all future maintainers: We have 4 channels that need to be updated in order to have a successful
|
||||||
|
Android release. Many of these channels are updated at different rates, and at times you must wait on a
|
||||||
|
third-party service to complete it's tasks before you may continue. When completing an Android release,
|
||||||
|
keep in mind that you must update 1) Maven 2) Google Play 3) f-droid.i2p.io and 4) F-Droid main
|
||||||
|
repository.
|
||||||
|
|
||||||
|
At the time of this revision, 2020/09/13, the main Android maintainer is idk. idk updates Maven, Google
|
||||||
|
Play, and f-droid.i2p.io, and nextl00p handles working with the F-Droid project to provide an I2P release
|
||||||
|
in their main repository.
|
||||||
|
|
||||||
|
NOTE: The docker container built by the Dockerfile in this repostory ensures that the Pre-requisites and
|
||||||
|
Dependencies are properly met by obtaining them from the Debian package in `oldoldstable` and pre-configuring
|
||||||
|
the override.properties that is used in the Docker container.
|
||||||
|
|
||||||
|
**>> Beginning of Docker-enabled Steps <<**
|
||||||
|
|
||||||
## Prerequirements
|
## Prerequirements
|
||||||
|
|
||||||
1. Ensure you got the deprecated maven ant tasks. ( https://maven.apache.org/ant-tasks/download.cgi )
|
1. Ensure you have the deprecated maven ant tasks. ( https://maven.apache.org/ant-tasks/download.cgi )
|
||||||
2. It should exist at `~/.ant/lib/maven-ant-tasks-2.1.3.jar`
|
2. It should exist at `~/.ant/lib/maven-ant-tasks-2.1.3.jar`
|
||||||
3. Ensure you got hamcrest-integration, hamcrest-library, hamcrest-core in the hamcrest.home directory.
|
3. Ensure you have hamcrest-integration, hamcrest-library, hamcrest-core in the hamcrest.home directory.
|
||||||
4. Ensure junit 4.12 at least in junit.home, ensure the jar file is named `junit4.jar`.
|
4. Ensure junit 4.12 at least in junit.home, ensure the jar file is named `junit4.jar`.
|
||||||
5. Ensure to have updated the changelog with the changes done.
|
5. Ensure you have the Mockito framework and accompanying documentation in your $JAVA_HOME
|
||||||
|
6. Ensure to have updated the changelog with the changes done.
|
||||||
|
7. Ensure that you are configured to build i2p.i2p with Java 8. On Debian it is easiest to set with
|
||||||
|
`update-java-alternatives --set java-8-openjdk-amd64` and picking Java 8. **TODO:** add instructions for non-Debian-based
|
||||||
|
systems.
|
||||||
|
8. Ensure that you have a Java 1.7 bootclasspath available. (See **Maven Central** step 2A.)
|
||||||
|
|
||||||
## Maven Central
|
## Get all the dependencies ready
|
||||||
|
|
||||||
1. Check out a clean copy of i2p.i2p at the correct release version. (Make a clean checkout)
|
### Maven Central
|
||||||
2. Build the maven packages via `ant mavenCentral` where you end up with mavencentral-*.jar files in the current directory.
|
|
||||||
3. Login to http://oss.sonatype.org for uploading the mavencentral-*.jar bundles.
|
|
||||||
4. In nexus, choose "Staging Upload" and upload all of the bundles with upload mode set to "Artifact Bundle"
|
|
||||||
5. Under "Staging Repositories" ensure all where uploaded correctly, select them all and press "Release" in the toolbar.
|
|
||||||
|
|
||||||
## Android Common Build
|
1. Check out a clean copy of i2p.i2p at the correct release version. (Make a clean checkout)
|
||||||
|
2. Build the maven packages via `ant mavenCentral` where you end up with mavencentral-*.jar files in the
|
||||||
|
current directory.
|
||||||
|
2. **A)** I2P for Android requires a Java 1.7 bootclasspath, but the servlet jar requires Java 8. So, to do the builds:
|
||||||
|
- First set `javac.compilerargs=-bootclasspath /path/to/java/7/rt.jar:/path/to/java/7/jce.jar` in override.properties
|
||||||
|
- Build with `ant mavenCentral`
|
||||||
|
|
||||||
1. Edit `routerjars/local.properties` to use the clean i2p.i2p copy.
|
**>> End of Docker-enabled Steps for Maven <<**
|
||||||
2. Pull the latest translations with `tx pull -a` and commit them. (If you don't have the `tx` command, do `pip install transifex-client` )
|
|
||||||
2a. If there are any new translations, `mtn add` them, and add them to `app/src/main/res/values/arrays.xml` (two places, alphabetical order please)
|
3. Login to http://oss.sonatype.org for uploading the mavencentral-*.jar bundles.
|
||||||
3. Ensure that `signing.properties` contains the details of the release key.
|
4. In nexus, choose "Staging Upload" and upload all of the files with upload mode set to "Artifacts with POM".
|
||||||
4. Edit `gradle.properties` to bump the I2P version.
|
When uploading the files to nexus, you *must* upload the pom.xml files, and all of their artifacts. For each
|
||||||
5. Edit `app/build.gradle` to bump the Android version number.
|
component, you will need to upload a *.jar, a *.jar.asc, a *sources.jar, a *sources.jar.asc, a javadoc.jar,
|
||||||
6. Edit `CHANGELOG` to add the release and date.
|
and a javadoc.jar.asc, and a pom.xml and a pom.xml.asc from the pkg-mavencentral directory during the "Upload
|
||||||
7. If the helper has changed since the last release, edit
|
Artifacts with POM" operation. You will need to do this once for each component you upload to Nexus.
|
||||||
`lib/helper/gradle.properties` to bump the version.
|
5. Under "Staging Repositories" ensure all where uploaded correctly, select them all and press "Release"
|
||||||
8. `./gradlew clean assembleRelease`
|
in the toolbar.
|
||||||
|
|
||||||
|
#### Example override.properties:
|
||||||
|
|
||||||
|
javac.version=1.7
|
||||||
|
javac.target=1.7
|
||||||
|
javac.source=1.8
|
||||||
|
javac.compilerargs=-bootclasspath /home/user/StudioProjects/java7bootclasspath/rt.jar:/home/user/StudioProjects/java7bootclasspath/jce.jar
|
||||||
|
javac.compilerargs7=-bootclasspath /home/user/StudioProjects/java7bootclasspath/rt.jar:/home/user/StudioProjects/java7bootclasspath/jce.jar
|
||||||
|
build.built-by=name
|
||||||
|
|
||||||
|
### Android Common Build
|
||||||
|
|
||||||
|
Using Docker: in order to use Docker to generate a new Android apk for release, you will
|
||||||
|
need to run the build twice, once for the mavenCentral jars, and once for the actual Android
|
||||||
|
app. After doing the Maven release, follow these steps in the i2p.android.base repository, and re-run
|
||||||
|
the `docker run` step described in `DOCKER.md`
|
||||||
|
|
||||||
|
1. Edit `routerjars/local.properties` to use the clean i2p.i2p copy.
|
||||||
|
2. Pull the latest translations with `tx pull -a` and commit them. (If you don't have the `tx` command,
|
||||||
|
do `pip install transifex-client` )
|
||||||
|
- If there are any new translations, `mtn add` them, and add them to `app/src/main/res/values/arrays.xml`
|
||||||
|
(two places, alphabetical order please)
|
||||||
|
3. Ensure that `signing.properties` contains the details of the release key. If you are using Docker, see
|
||||||
|
`DOCKER.md` to perform this step for Docker builds by editing `etc/docker.signing.properties` instead.
|
||||||
|
4. Edit `gradle.properties` to bump the I2P version.
|
||||||
|
5. Edit `app/build.gradle` to bump the Android version number.
|
||||||
|
6. Edit `CHANGELOG` to add the release and date.
|
||||||
|
7. If the helper has changed since the last release, edit
|
||||||
|
`lib/helper/gradle.properties` to bump the version.
|
||||||
|
8. `./gradlew clean assembleRelease`
|
||||||
|
|
||||||
### Libraries
|
### Libraries
|
||||||
|
|
||||||
1. `./gradlew :lib:client:uploadArchives`
|
1. `./gradlew :lib:client:uploadArchives`
|
||||||
2. If the helper version was changed and should be released: `./gradlew :lib:helper:uploadArchives`
|
2. If the helper version was changed and should be released: `./gradlew :lib:helper:uploadArchives`
|
||||||
3. Check on Sonatype that everything worked, and close/release.
|
3. Check on Sonatype that everything worked, and close/release.
|
||||||
|
|
||||||
## F-Droid Guide
|
## Release Packages
|
||||||
|
|
||||||
1. Ensure you have the release keys, the keyfile must be placed at `~/.local/share/fdroidserver/keystore.jks`
|
### F-Droid Guide
|
||||||
2. If it's the first time, or you have reinstalled anything, ensure `path/to/fdroid/config.py` has correct information.
|
|
||||||
3. Assuming you already have ran `./gradlew clean assembleRelease` from a earlier step, continue.
|
|
||||||
4. `cp app/build/outputs/apk/free/release/app-free-release.apk path/to/fdroid/repo/I2P-VERSION.apk`
|
|
||||||
5. Update `path/to/fdroid/metadata/net.i2p.android.txt` (The versions at the bottom of the file)
|
|
||||||
6. Run `fdroid update` from inside the fdroid path (install fdroid command via `pip install fdroidserver`)
|
|
||||||
7. Zip/tar the local fdroid repo and archive. `rm fdroid.tgz && tar czf fdroid.tgz archive/ repo/` from the fdroid directory.
|
|
||||||
8. Push to download server and put in place. (via SSH for example, `scp fdroid.tgz download.i2p2.de:~/`)
|
|
||||||
9. On the server run `bin-fd/update-fdroid` and `sudo bin-fd/update-app i2p 0.9.40` (This ensures we use the exact same apk file for the download page as in fdroid and gplay)
|
|
||||||
10. Check F-Droid repo works, and app works.
|
|
||||||
|
|
||||||
## Google Play and finishing up
|
This guide is for f-droid.i2p.io, not for F-Droid's main repository. The repository keystore **and** the
|
||||||
|
config.py used to generate the repository are required to complete this process successfully.
|
||||||
|
|
||||||
1. Verify which files that are changed via `mtn ls cha`. It shouldn't be much more than those bellow this line and possible translations (`mtn ls unk`).
|
1. Ensure you have the release keys, the keyfile must be placed at `~/.local/share/fdroidserver/keystore.jks`
|
||||||
2. Commit your release changes, `mtn ci gradle.properties lib/helper/gradle.properties app/build.gradle`
|
2. If it's the first time, or you have reinstalled anything, ensure `path/to/fdroid/config.py` has correct
|
||||||
3. Push free and donate builds to Google Play via https://play.google.com/apps/publish/
|
information.
|
||||||
4. Tag the new release. Example `mtn tag h: android-0.9.36`
|
3. Assuming you already have ran `./gradlew clean assembleRelease` from a earlier step, continue.
|
||||||
5. Push the monotone changes
|
4. `cp app/build/outputs/apk/free/release/app-free-release.apk path/to/fdroid/repo/I2P-VERSION.apk`
|
||||||
6. Update download page (version and hash, including F-Droid)
|
5. Update `path/to/fdroid/metadata/net.i2p.android.txt` (The versions at the bottom of the file)
|
||||||
|
6. Run `fdroid update` from inside the fdroid path (install fdroid command via `pip install fdroidserver`)
|
||||||
|
7. Zip/tar the local fdroid repo and archive. `rm fdroid.tgz && tar czf fdroid.tgz archive/ repo/` from the
|
||||||
|
fdroid directory.
|
||||||
|
8. Push to download server and put in place. (via SSH for example, `scp fdroid.tgz download.i2p2.de:~/`)
|
||||||
|
9. On the server run `bin-fd/update-fdroid` and `sudo bin-fd/update-app i2p 0.9.40` (This ensures we use the
|
||||||
|
exact same apk file for the download page as in fdroid and gplay)
|
||||||
|
10. Check F-Droid repo works, and app works.
|
||||||
|
|
||||||
|
### Google Play and finishing up
|
||||||
|
|
||||||
|
1. Verify which files that are changed via `mtn ls cha`. It shouldn't be much more than those bellow this
|
||||||
|
line and possible translations (`mtn ls unk`).
|
||||||
|
2. Commit your release changes, `mtn ci gradle.properties lib/helper/gradle.properties app/build.gradle`
|
||||||
|
3. Push free and donate builds to Google Play via https://play.google.com/apps/publish/
|
||||||
|
4. Tag the new release. Example `mtn tag h: android-0.9.36`
|
||||||
|
5. Push the monotone changes. Make sure that they are there at the next git sync.
|
||||||
|
6. Update download page (version and hash, including F-Droid)
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ repositories {
|
|||||||
android {
|
android {
|
||||||
compileSdkVersion 28
|
compileSdkVersion 28
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
versionCode 4745256
|
versionCode 4745261
|
||||||
versionName "$I2P_VERSION"
|
versionName "$I2P_VERSION"
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
|
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
|
||||||
@ -114,7 +114,7 @@ task copyI2PResources(type: Copy) {
|
|||||||
outputs.upToDateWhen { false }
|
outputs.upToDateWhen { false }
|
||||||
into 'src/main/res'
|
into 'src/main/res'
|
||||||
into('drawable') {
|
into('drawable') {
|
||||||
from file(i2pbase + '/installer/resources/themes/console/images/i2plogo.png')
|
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/i2plogo.png')
|
||||||
}
|
}
|
||||||
into('raw') {
|
into('raw') {
|
||||||
from(i2pbase + '/installer/resources/blocklist.txt') { rename { 'blocklist_txt' } }
|
from(i2pbase + '/installer/resources/blocklist.txt') { rename { 'blocklist_txt' } }
|
||||||
@ -177,15 +177,15 @@ task copyI2PAssets(type: Copy) {
|
|||||||
outputs.upToDateWhen { false }
|
outputs.upToDateWhen { false }
|
||||||
into 'src/main/assets/themes/console'
|
into 'src/main/assets/themes/console'
|
||||||
into('images') {
|
into('images') {
|
||||||
from file(i2pbase + '/installer/resources/themes/console/images/i2plogo.png')
|
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/i2plogo.png')
|
||||||
from file(i2pbase + '/installer/resources/themes/console/images/inbound.png')
|
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/inbound.png')
|
||||||
from file(i2pbase + '/installer/resources/themes/console/images/outbound.png')
|
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/outbound.png')
|
||||||
}
|
}
|
||||||
into('light') {
|
into('light') {
|
||||||
from file(i2pbase + '/installer/resources/themes/console/light/console.css')
|
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/light/console.css')
|
||||||
}
|
}
|
||||||
into('light/images') {
|
into('light/images') {
|
||||||
from file(i2pbase + '/installer/resources/themes/console/light/images/header.png')
|
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/light/images/header.png')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ class InitActivities {
|
|||||||
|
|
||||||
File docsDir = new File(myDir, "docs");
|
File docsDir = new File(myDir, "docs");
|
||||||
docsDir.mkdir();
|
docsDir.mkdir();
|
||||||
copyResourceToFile(R.raw.ahelper_conflict_header_ht, "docs/ahelper-conflict-header.ht");
|
/*copyResourceToFile(R.raw.ahelper_conflict_header_ht, "docs/ahelper-conflict-header.ht");
|
||||||
copyResourceToFile(R.raw.ahelper_new_header_ht, "docs/ahelper-new-header.ht");
|
copyResourceToFile(R.raw.ahelper_new_header_ht, "docs/ahelper-new-header.ht");
|
||||||
copyResourceToFile(R.raw.ahelper_notfound_header_ht, "docs/ahelper-notfound-header.ht");
|
copyResourceToFile(R.raw.ahelper_notfound_header_ht, "docs/ahelper-notfound-header.ht");
|
||||||
copyResourceToFile(R.raw.auth_header_ht, "docs/auth-header.ht");
|
copyResourceToFile(R.raw.auth_header_ht, "docs/auth-header.ht");
|
||||||
@ -110,7 +110,7 @@ class InitActivities {
|
|||||||
copyResourceToFile(R.raw.noproxy_header_ht, "docs/noproxy-header.ht");
|
copyResourceToFile(R.raw.noproxy_header_ht, "docs/noproxy-header.ht");
|
||||||
copyResourceToFile(R.raw.protocol_header_ht, "docs/protocol-header.ht");
|
copyResourceToFile(R.raw.protocol_header_ht, "docs/protocol-header.ht");
|
||||||
copyResourceToFile(R.raw.reset_header_ht, "docs/reset-header.ht");
|
copyResourceToFile(R.raw.reset_header_ht, "docs/reset-header.ht");
|
||||||
copyResourceToFile(R.raw.resetp_header_ht, "docs/resetp-header.ht");
|
copyResourceToFile(R.raw.resetp_header_ht, "docs/resetp-header.ht");*/
|
||||||
|
|
||||||
File cssDir = new File(docsDir, "themes/console/light");
|
File cssDir = new File(docsDir, "themes/console/light");
|
||||||
cssDir.mkdirs();
|
cssDir.mkdirs();
|
||||||
|
@ -5,11 +5,13 @@ import android.os.Build;
|
|||||||
import android.support.v4.util.Pair;
|
import android.support.v4.util.Pair;
|
||||||
import android.support.v4.view.ViewCompat;
|
import android.support.v4.view.ViewCompat;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
import android.view.Gravity;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import net.i2p.android.router.R;
|
import net.i2p.android.router.R;
|
||||||
import net.i2p.android.util.FragmentUtils;
|
import net.i2p.android.util.FragmentUtils;
|
||||||
@ -129,6 +131,17 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setClipboard(Context context, String text) {
|
||||||
|
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
|
||||||
|
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||||
|
clipboard.setText(text);
|
||||||
|
} else {
|
||||||
|
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||||
|
android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", text);
|
||||||
|
clipboard.setPrimaryClip(clip);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Replace the contents of a view (invoked by the layout manager)
|
// Replace the contents of a view (invoked by the layout manager)
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
|
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
|
||||||
@ -183,6 +196,19 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
|||||||
ViewCompat.getTransitionName(tvh.status));
|
ViewCompat.getTransitionName(tvh.status));
|
||||||
Pair<View, String>[] pairs = new Pair[]{ statusPair};
|
Pair<View, String>[] pairs = new Pair[]{ statusPair};
|
||||||
mListener.onTunnelSelected(tunnel.getId(), pairs);
|
mListener.onTunnelSelected(tunnel.getId(), pairs);
|
||||||
|
view.invalidate();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
tvh.itemView.setOnLongClickListener(new View.OnLongClickListener() {
|
||||||
|
//@Override
|
||||||
|
public boolean onLongClick(View view) {
|
||||||
|
setClipboard(mCtx, tunnel.getDestHashBase32());
|
||||||
|
Toast clipboardMessage = Toast.makeText(mCtx, R.string.copied_base32_system_notification_title, Toast. LENGTH_LONG);
|
||||||
|
clipboardMessage.setGravity(Gravity.TOP, 0, 0); //optional
|
||||||
|
clipboardMessage.show();
|
||||||
|
view.invalidate();
|
||||||
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
@ -190,6 +216,7 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the size of the dataset (invoked by the layout manager)
|
// Return the size of the dataset (invoked by the layout manager)
|
||||||
|
@ -16,6 +16,7 @@ import android.preference.PreferenceManager;
|
|||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.support.v4.content.LocalBroadcastManager;
|
import android.support.v4.content.LocalBroadcastManager;
|
||||||
import android.support.v7.app.AlertDialog;
|
import android.support.v7.app.AlertDialog;
|
||||||
|
import android.util.AndroidRuntimeException;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -27,6 +28,7 @@ import android.widget.ScrollView;
|
|||||||
import android.widget.TableLayout;
|
import android.widget.TableLayout;
|
||||||
import android.widget.TableRow;
|
import android.widget.TableRow;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
import android.widget.ToggleButton;
|
import android.widget.ToggleButton;
|
||||||
|
|
||||||
import net.i2p.android.I2PActivityBase;
|
import net.i2p.android.I2PActivityBase;
|
||||||
@ -646,32 +648,36 @@ public class MainFragment extends I2PFragmentBase {
|
|||||||
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
|
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
|
||||||
if (!pm.isIgnoringBatteryOptimizations(packageName)) {
|
if (!pm.isIgnoringBatteryOptimizations(packageName)) {
|
||||||
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
|
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
|
||||||
b.setTitle(R.string.configure_no_doze_title)
|
b.setTitle(R.string.configure_no_doze_title);
|
||||||
.setMessage(R.string.configure_no_doze)
|
b.setMessage(R.string.configure_no_doze);
|
||||||
.setCancelable(false)
|
b.setCancelable(false);
|
||||||
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
|
b.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int i) {
|
public void onClick(DialogInterface dialog, int i) {
|
||||||
String packageName = mContext.getPackageName();
|
String packageName = mContext.getPackageName();
|
||||||
dialog.dismiss();
|
ab.setPref(PREF_CONFIGURE_BATTERY, false);
|
||||||
ab.setPref(PREF_CONFIGURE_BATTERY, true);
|
dialog.dismiss();
|
||||||
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
|
// Simply do not re-attempt a battery optimization after the first time,
|
||||||
intent.setData(Uri.parse("package:" + packageName));
|
// even if an error occurs. http://trac.i2p2.i2p/ticket/2783
|
||||||
try {
|
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
|
||||||
mContext.startActivity(intent);
|
intent.setData(Uri.parse("package:" + packageName));
|
||||||
} catch (ActivityNotFoundException activityNotFound) {
|
try {
|
||||||
ab.setPref(PREF_CONFIGURE_BATTERY, true);
|
mContext.startActivity(intent);
|
||||||
}
|
} catch (ActivityNotFoundException activityNotFound) {
|
||||||
}
|
ab.setPref(PREF_CONFIGURE_BATTERY, false);
|
||||||
})
|
} catch (AndroidRuntimeException activityNotFound) {
|
||||||
.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
|
ab.setPref(PREF_CONFIGURE_BATTERY, false);
|
||||||
@Override
|
}
|
||||||
public void onClick(DialogInterface dialog, int i) {
|
}
|
||||||
dialog.cancel();
|
});
|
||||||
ab.setPref(PREF_CONFIGURE_BATTERY, false);
|
b.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
|
||||||
}
|
@Override
|
||||||
})
|
public void onClick(DialogInterface dialog, int i) {
|
||||||
.show();
|
dialog.cancel();
|
||||||
|
ab.setPref(PREF_CONFIGURE_BATTERY, false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
b.show();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ab.setPref(PREF_CONFIGURE_BATTERY, false);
|
ab.setPref(PREF_CONFIGURE_BATTERY, false);
|
||||||
|
@ -5,6 +5,7 @@ import android.content.Context;
|
|||||||
//import net.i2p.BOB.BOB;
|
//import net.i2p.BOB.BOB;
|
||||||
import net.i2p.I2PAppContext;
|
import net.i2p.I2PAppContext;
|
||||||
import net.i2p.addressbook.DaemonThread;
|
import net.i2p.addressbook.DaemonThread;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
import net.i2p.android.apps.NewsFetcher;
|
import net.i2p.android.apps.NewsFetcher;
|
||||||
import net.i2p.android.router.util.Notifications;
|
import net.i2p.android.router.util.Notifications;
|
||||||
import net.i2p.android.router.util.Util;
|
import net.i2p.android.router.util.Util;
|
||||||
@ -14,8 +15,11 @@ import net.i2p.router.JobImpl;
|
|||||||
import net.i2p.router.RouterContext;
|
import net.i2p.router.RouterContext;
|
||||||
import net.i2p.router.startup.RouterAppManager;
|
import net.i2p.router.startup.RouterAppManager;
|
||||||
import net.i2p.util.I2PAppThread;
|
import net.i2p.util.I2PAppThread;
|
||||||
|
import net.i2p.sam.SAMBridge;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load the clients we want.
|
* Load the clients we want.
|
||||||
@ -41,6 +45,7 @@ class LoadClientsJob extends JobImpl {
|
|||||||
private final Context mCtx;
|
private final Context mCtx;
|
||||||
private final Notifications _notif;
|
private final Notifications _notif;
|
||||||
private DaemonThread _addressbook;
|
private DaemonThread _addressbook;
|
||||||
|
public SAMBridge SAM_BRIDGE;
|
||||||
//private BOB _bob;
|
//private BOB _bob;
|
||||||
|
|
||||||
/** this is the delay to load (and start) the clients. */
|
/** this is the delay to load (and start) the clients. */
|
||||||
@ -57,8 +62,9 @@ class LoadClientsJob extends JobImpl {
|
|||||||
public String getName() { return "Start Clients"; }
|
public String getName() { return "Start Clients"; }
|
||||||
|
|
||||||
public void runJob() {
|
public void runJob() {
|
||||||
Job j = new RunI2PTunnel(getContext());
|
Job jtunnel = new RunI2PTunnel(getContext());
|
||||||
getContext().jobQueue().addJob(j);
|
getContext().jobQueue().addJob(jtunnel);
|
||||||
|
|
||||||
|
|
||||||
Thread t = new I2PAppThread(new StatSummarizer(), "StatSummarizer", true);
|
Thread t = new I2PAppThread(new StatSummarizer(), "StatSummarizer", true);
|
||||||
t.setPriority(Thread.NORM_PRIORITY - 1);
|
t.setPriority(Thread.NORM_PRIORITY - 1);
|
||||||
@ -69,7 +75,15 @@ class LoadClientsJob extends JobImpl {
|
|||||||
//try {
|
//try {
|
||||||
// _bob.startup();
|
// _bob.startup();
|
||||||
//} catch (IOException ioe) {}
|
//} catch (IOException ioe) {}
|
||||||
|
boolean useSAM = PreferenceManager.getDefaultSharedPreferences(mCtx).getBoolean("i2pandroid.client.SAM", true);
|
||||||
|
Util.i("SAM API " + useSAM);
|
||||||
|
if (useSAM) {
|
||||||
|
Job jsam = new RunI2PSAM(getContext());
|
||||||
|
getContext().jobQueue().addJob(jsam);
|
||||||
|
Util.i("SAM API started successfully" + useSAM);
|
||||||
|
}else{
|
||||||
|
Util.i("SAM API disabled, not starting "+useSAM);
|
||||||
|
}
|
||||||
getContext().addShutdownTask(new ClientShutdownHook());
|
getContext().addShutdownTask(new ClientShutdownHook());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,12 +96,13 @@ class LoadClientsJob extends JobImpl {
|
|||||||
public String getName() { return "Start I2P Tunnel"; }
|
public String getName() { return "Start I2P Tunnel"; }
|
||||||
|
|
||||||
public void runJob() {
|
public void runJob() {
|
||||||
while (!getContext().router().isRunning()) {
|
if (!getContext().router().isRunning()) {
|
||||||
try { Thread.sleep(1000); } catch (InterruptedException ie) { return; }
|
if (getContext().router().isAlive()) {
|
||||||
if (!getContext().router().isAlive()) {
|
requeue(1000);
|
||||||
|
} else {
|
||||||
Util.e("Router stopped before i2ptunnel could start");
|
Util.e("Router stopped before i2ptunnel could start");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
Util.d("Starting i2ptunnel");
|
Util.d("Starting i2ptunnel");
|
||||||
TunnelControllerGroup tcg = TunnelControllerGroup.getInstance(getContext());
|
TunnelControllerGroup tcg = TunnelControllerGroup.getInstance(getContext());
|
||||||
@ -112,6 +127,46 @@ class LoadClientsJob extends JobImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class RunI2PSAM extends JobImpl {
|
||||||
|
|
||||||
|
public RunI2PSAM(RouterContext ctx) {
|
||||||
|
super(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() { return "Start SAM API"; }
|
||||||
|
|
||||||
|
public void runJob() {
|
||||||
|
if (!getContext().router().isRunning()) {
|
||||||
|
if (getContext().router().isAlive()) {
|
||||||
|
requeue(1000);
|
||||||
|
} else {
|
||||||
|
Util.e("Router stopped before SAM API could start");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Util.d("Starting SAM");
|
||||||
|
try {
|
||||||
|
Util.i("Starting the SAM API");
|
||||||
|
SAM_BRIDGE = new SAMBridge("127.0.0.1",
|
||||||
|
7656,
|
||||||
|
false,
|
||||||
|
SAM_PROPERTIES(),
|
||||||
|
"sam.keys",
|
||||||
|
new File("sam_config"));
|
||||||
|
SAM_BRIDGE.run();
|
||||||
|
} catch (IOException e) {
|
||||||
|
Util.e( e.toString());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Properties SAM_PROPERTIES() throws IOException {
|
||||||
|
Util.i("Getting the default properties");
|
||||||
|
Properties sam_properties = new Properties();
|
||||||
|
return sam_properties;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class ClientShutdownHook implements Runnable {
|
private class ClientShutdownHook implements Runnable {
|
||||||
public void run() {
|
public void run() {
|
||||||
Util.d("client shutdown hook");
|
Util.d("client shutdown hook");
|
||||||
@ -120,6 +175,8 @@ class LoadClientsJob extends JobImpl {
|
|||||||
// NewsFetcher registers its own hook
|
// NewsFetcher registers its own hook
|
||||||
//if (_bob != null)
|
//if (_bob != null)
|
||||||
// _bob.shutdown(null);
|
// _bob.shutdown(null);
|
||||||
|
if (SAM_BRIDGE != null)
|
||||||
|
SAM_BRIDGE.shutdown(null);
|
||||||
if (_addressbook != null)
|
if (_addressbook != null)
|
||||||
_addressbook.halt();
|
_addressbook.halt();
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
@ -168,10 +169,18 @@ public class RouterService extends Service {
|
|||||||
}
|
}
|
||||||
_handler.removeCallbacks(_updater);
|
_handler.removeCallbacks(_updater);
|
||||||
_handler.postDelayed(_updater, 50);
|
_handler.postDelayed(_updater, 50);
|
||||||
|
|
||||||
|
// We need to *not* check if we're restarting on Android greater than Oreo due to
|
||||||
|
// changes in how notifications work and the use of NotificationChannels.
|
||||||
if(!restart) {
|
if(!restart) {
|
||||||
startForeground(1337, _statusBar.getNote());
|
startForeground(1337, _statusBar.getNote());
|
||||||
|
} else {
|
||||||
|
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
|
||||||
|
startForeground(1337, _statusBar.getNote());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//return START_STICKY;
|
//return START_STICKY;
|
||||||
return START_NOT_STICKY;
|
return START_NOT_STICKY;
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
package net.i2p.android.router.service;
|
package net.i2p.android.router.service;
|
||||||
|
|
||||||
import android.app.Notification;
|
import android.app.Notification;
|
||||||
|
import android.app.NotificationChannel;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.os.Build;
|
||||||
import android.support.v4.app.NotificationCompat;
|
import android.support.v4.app.NotificationCompat;
|
||||||
|
import android.view.Gravity;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import net.i2p.android.I2PActivity;
|
import net.i2p.android.I2PActivity;
|
||||||
import net.i2p.android.router.R;
|
import net.i2p.android.router.R;
|
||||||
@ -16,6 +20,9 @@ class StatusBar {
|
|||||||
private final NotificationManager mNotificationManager;
|
private final NotificationManager mNotificationManager;
|
||||||
private final NotificationCompat.Builder mNotifyBuilder;
|
private final NotificationCompat.Builder mNotifyBuilder;
|
||||||
private Notification mNotif;
|
private Notification mNotif;
|
||||||
|
private final String NOTIFICATION_CHANNEL_ID = "net.i2p.android.STARTUP_STATE_CHANNEL";
|
||||||
|
private final String channelName = "I2P Router Service";
|
||||||
|
NotificationChannel mNotificationChannel;
|
||||||
|
|
||||||
private static final int ID = 1337;
|
private static final int ID = 1337;
|
||||||
|
|
||||||
@ -28,25 +35,33 @@ class StatusBar {
|
|||||||
|
|
||||||
StatusBar(Context ctx) {
|
StatusBar(Context ctx) {
|
||||||
mCtx = ctx;
|
mCtx = ctx;
|
||||||
mNotificationManager = (NotificationManager) ctx.getSystemService(
|
mNotificationManager = (NotificationManager) mCtx.getSystemService(
|
||||||
Context.NOTIFICATION_SERVICE);
|
Context.NOTIFICATION_SERVICE);
|
||||||
|
assert mNotificationManager != null;
|
||||||
|
|
||||||
Thread.currentThread().setUncaughtExceptionHandler(
|
Thread.currentThread().setUncaughtExceptionHandler(
|
||||||
new CrashHandler(mNotificationManager));
|
new CrashHandler(mNotificationManager));
|
||||||
|
|
||||||
int icon = ICON_STARTING;
|
int icon = ICON_STARTING;
|
||||||
// won't be shown if replace() is called
|
// won't be shown if replace() is called
|
||||||
String text = ctx.getString(R.string.notification_status_starting);
|
String text = mCtx.getString(R.string.notification_status_starting);
|
||||||
|
|
||||||
mNotifyBuilder = new NotificationCompat.Builder(ctx)
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
.setContentText(text)
|
mNotifyBuilder = new NotificationCompat.Builder(mCtx);
|
||||||
.setSmallIcon(icon)
|
} else {
|
||||||
.setColor(mCtx.getResources().getColor(R.color.primary_light))
|
mNotifyBuilder = new NotificationCompat.Builder(mCtx, NOTIFICATION_CHANNEL_ID);
|
||||||
.setOngoing(true)
|
}
|
||||||
.setOnlyAlertOnce(true);
|
|
||||||
|
|
||||||
Intent intent = new Intent(ctx, I2PActivity.class);
|
mNotifyBuilder.setContentText(text);
|
||||||
|
mNotifyBuilder.setSmallIcon(icon);
|
||||||
|
mNotifyBuilder.setColor(mCtx.getResources().getColor(R.color.primary_light));
|
||||||
|
mNotifyBuilder.setOngoing(true);
|
||||||
|
mNotifyBuilder.setPriority(NotificationManager.IMPORTANCE_LOW);
|
||||||
|
mNotifyBuilder.setCategory(Notification.CATEGORY_SERVICE);
|
||||||
|
|
||||||
|
Intent intent = new Intent(mCtx, I2PActivity.class);
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
PendingIntent pi = PendingIntent.getActivity(ctx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent pi = PendingIntent.getActivity(mCtx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
mNotifyBuilder.setContentIntent(pi);
|
mNotifyBuilder.setContentIntent(pi);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,6 +89,12 @@ class StatusBar {
|
|||||||
public void update(String title, String text) {
|
public void update(String title, String text) {
|
||||||
mNotifyBuilder.setContentTitle(title)
|
mNotifyBuilder.setContentTitle(title)
|
||||||
.setContentText(text);
|
.setContentText(text);
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
mNotificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_LOW);
|
||||||
|
mNotificationManager.createNotificationChannel(mNotificationChannel);
|
||||||
|
mNotificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
|
||||||
|
mNotifyBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
|
||||||
|
}
|
||||||
mNotif = mNotifyBuilder.build();
|
mNotif = mNotifyBuilder.build();
|
||||||
mNotificationManager.notify(ID, mNotif);
|
mNotificationManager.notify(ID, mNotif);
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,20 @@ package net.i2p.android.router.util;
|
|||||||
|
|
||||||
import net.i2p.android.router.R;
|
import net.i2p.android.router.R;
|
||||||
|
|
||||||
|
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.os.Build;
|
||||||
import android.support.v4.app.NotificationCompat;
|
import android.support.v4.app.NotificationCompat;
|
||||||
|
|
||||||
public class Notifications {
|
public class Notifications {
|
||||||
private final Context mCtx;
|
private final Context mCtx;
|
||||||
private final NotificationManager mNotificationManager;
|
private final NotificationManager mNotificationManager;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static final int ICON = R.drawable.ic_stat_router_active;
|
public static final int ICON = R.drawable.ic_stat_router_active;
|
||||||
|
|
||||||
public Notifications(Context ctx) {
|
public Notifications(Context ctx) {
|
||||||
@ -25,13 +29,26 @@ public class Notifications {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void notify(String title, String text, Class<?> c) {
|
public void notify(String title, String text, Class<?> c) {
|
||||||
NotificationCompat.Builder b =
|
notify(title, text, "", c);
|
||||||
new NotificationCompat.Builder(mCtx)
|
}
|
||||||
.setContentTitle(title)
|
|
||||||
.setContentText(text)
|
public void notify(String title, String text, String channel, Class<?> c) {
|
||||||
.setSmallIcon(ICON)
|
NotificationCompat.Builder b;
|
||||||
.setColor(mCtx.getResources().getColor(R.color.primary_light))
|
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
|
||||||
.setAutoCancel(true);
|
b = new NotificationCompat.Builder(mCtx);
|
||||||
|
} else {
|
||||||
|
if (channel.equals("")){
|
||||||
|
b = new NotificationCompat.Builder(mCtx);
|
||||||
|
} else {
|
||||||
|
b = new NotificationCompat.Builder(mCtx, channel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
b.setContentTitle(title);
|
||||||
|
b.setContentText(text);
|
||||||
|
b.setSmallIcon(ICON);
|
||||||
|
b.setColor(mCtx.getResources().getColor(R.color.primary_light));
|
||||||
|
b.setAutoCancel(true);
|
||||||
|
|
||||||
if (c != null) {
|
if (c != null) {
|
||||||
Intent intent = new Intent(mCtx, c);
|
Intent intent = new Intent(mCtx, c);
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
<html>
|
||||||
|
<head></head>
|
||||||
|
<body>
|
||||||
|
<h2>How to configure IceRaven for Android:</h2>
|
||||||
|
<h3>Configuration via Webextension</h3>
|
||||||
|
<ol>
|
||||||
|
<li>Open IceRaven and click the main menu. Scroll to the top, and tap the "Add-Ons" submenu.</li>
|
||||||
|
<li>Tap on the "Add-Ons Manager" option.</li>
|
||||||
|
<li>Find the "I2P Proxy for Android and Other" extension in the Add-Ons collection and tap on the <code>+</code> symbol</li>
|
||||||
|
<li>You can now browse I2P Sites!</li>
|
||||||
|
</ol>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -24,8 +24,7 @@
|
|||||||
<li>Tap "Update"</li>
|
<li>Tap "Update"</li>
|
||||||
<li>You can now browse I2P eepsites!</li>
|
<li>You can now browse I2P eepsites!</li>
|
||||||
</ol>
|
</ol>
|
||||||
<h3>Experimental Rootless Configuration via Webextension</h3>
|
<h3>Rootless Configuration via Webextension</h3>
|
||||||
<strong><p>Use at your own risk</p></strong>
|
|
||||||
<ol>
|
<ol>
|
||||||
<li>Open this link in GNU IceCat and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
|
<li>Open this link in GNU IceCat and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
|
||||||
<li>Click through the "Blocked Extension" warning</li>
|
<li>Click through the "Blocked Extension" warning</li>
|
||||||
|
@ -24,8 +24,7 @@
|
|||||||
<li>Tap "Update"</li>
|
<li>Tap "Update"</li>
|
||||||
<li>You can now browse I2P eepsites!</li>
|
<li>You can now browse I2P eepsites!</li>
|
||||||
</ol>
|
</ol>
|
||||||
<h3>Experimental Rootless Configuration via Webextension</h3>
|
<h3>Rootless Configuration via Webextension</h3>
|
||||||
<strong><p>Use at your own risk</p></strong>
|
|
||||||
<ol>
|
<ol>
|
||||||
<li>Open this link in Fennec and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
|
<li>Open this link in Fennec and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
|
||||||
<li>Click through the "Blocked Extension" warning</li>
|
<li>Click through the "Blocked Extension" warning</li>
|
||||||
|
@ -24,8 +24,7 @@
|
|||||||
<li>Tap "Update"</li>
|
<li>Tap "Update"</li>
|
||||||
<li>You can now browse I2P eepsites!</li>
|
<li>You can now browse I2P eepsites!</li>
|
||||||
</ol>
|
</ol>
|
||||||
<h3>Experimental Rootless Configuration via Webextension</h3>
|
<h3>Rootless Configuration via Webextension</h3>
|
||||||
<strong><p>Use at your own risk</p></strong>
|
|
||||||
<ol>
|
<ol>
|
||||||
<li>Open this link in Firefox and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
|
<li>Open this link in Firefox and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
|
||||||
<li>Click through the "Blocked Extension" warning</li>
|
<li>Click through the "Blocked Extension" warning</li>
|
||||||
|
@ -8,7 +8,7 @@ tunnel.0.type=httpclient
|
|||||||
tunnel.0.sharedClient=false
|
tunnel.0.sharedClient=false
|
||||||
tunnel.0.interface=127.0.0.1
|
tunnel.0.interface=127.0.0.1
|
||||||
tunnel.0.listenPort=4444
|
tunnel.0.listenPort=4444
|
||||||
tunnel.0.proxyList=false.i2p,blue.proxynet.i2p
|
tunnel.0.proxyList=false.i2p
|
||||||
tunnel.0.i2cpHost=127.0.0.1
|
tunnel.0.i2cpHost=127.0.0.1
|
||||||
tunnel.0.i2cpPort=7654
|
tunnel.0.i2cpPort=7654
|
||||||
tunnel.0.option.inbound.nickname=I2P HTTP Proxy
|
tunnel.0.option.inbound.nickname=I2P HTTP Proxy
|
||||||
@ -18,7 +18,7 @@ tunnel.0.option.i2cp.reduceIdleTime=600000
|
|||||||
tunnel.0.option.i2cp.reduceOnIdle=true
|
tunnel.0.option.i2cp.reduceOnIdle=true
|
||||||
tunnel.0.option.i2cp.reduceQuantity=1
|
tunnel.0.option.i2cp.reduceQuantity=1
|
||||||
tunnel.0.option.i2p.streaming.connectDelay=1000
|
tunnel.0.option.i2p.streaming.connectDelay=1000
|
||||||
tunnel.0.option.i2ptunnel.httpclient.SSLOutproxies=false.i2p,blue.proxynet.i2p
|
tunnel.0.option.i2ptunnel.httpclient.SSLOutproxies=false.i2p
|
||||||
tunnel.0.option.inbound.length=2
|
tunnel.0.option.inbound.length=2
|
||||||
tunnel.0.option.inbound.lengthVariance=0
|
tunnel.0.option.inbound.lengthVariance=0
|
||||||
tunnel.0.option.outbound.length=2
|
tunnel.0.option.outbound.length=2
|
||||||
@ -33,7 +33,7 @@ tunnel.1.type=ircclient
|
|||||||
tunnel.1.sharedClient=true
|
tunnel.1.sharedClient=true
|
||||||
tunnel.1.interface=127.0.0.1
|
tunnel.1.interface=127.0.0.1
|
||||||
tunnel.1.listenPort=6668
|
tunnel.1.listenPort=6668
|
||||||
tunnel.1.targetDestination=irc.dg.i2p:6667,irc.postman.i2p:6667,irc.echelon.i2p:6667
|
tunnel.1.targetDestination=irc.postman.i2p:6667,irc.echelon.i2p:6667
|
||||||
tunnel.1.i2cpHost=127.0.0.1
|
tunnel.1.i2cpHost=127.0.0.1
|
||||||
tunnel.1.i2cpPort=7654
|
tunnel.1.i2cpPort=7654
|
||||||
tunnel.1.option.inbound.nickname=shared clients
|
tunnel.1.option.inbound.nickname=shared clients
|
||||||
@ -100,3 +100,56 @@ tunnel.3.option.outbound.length=2
|
|||||||
tunnel.3.option.outbound.lengthVariance=0
|
tunnel.3.option.outbound.lengthVariance=0
|
||||||
tunnel.3.option.outbound.priority=15
|
tunnel.3.option.outbound.priority=15
|
||||||
tunnel.3.startOnLoad=true
|
tunnel.3.startOnLoad=true
|
||||||
|
|
||||||
|
# I2P Git Repositories SSH Access
|
||||||
|
tunnel.6.description=I2P Git Repositories SSH Access
|
||||||
|
tunnel.6.interface=127.0.0.1
|
||||||
|
tunnel.6.listenPort=7670
|
||||||
|
tunnel.6.name=gitssh.idk.i2p
|
||||||
|
tunnel.6.option.i2cp.closeIdleTime=1800000
|
||||||
|
tunnel.6.option.i2cp.closeOnIdle=false
|
||||||
|
tunnel.6.option.i2cp.delayOpen=true
|
||||||
|
tunnel.6.option.i2cp.destination.sigType=7
|
||||||
|
tunnel.6.option.i2cp.newDestOnResume=false
|
||||||
|
tunnel.6.option.i2cp.reduceIdleTime=1200000
|
||||||
|
tunnel.6.option.i2cp.reduceOnIdle=true
|
||||||
|
tunnel.6.option.i2cp.reduceQuantity=1
|
||||||
|
tunnel.6.option.inbound.backupQuantity=1
|
||||||
|
tunnel.6.option.inbound.length=3
|
||||||
|
tunnel.6.option.inbound.nickname=gitssh.idk.i2p
|
||||||
|
tunnel.6.option.inbound.quantity=3
|
||||||
|
tunnel.6.option.outbound.backupQuantity=1
|
||||||
|
tunnel.6.option.outbound.length=3
|
||||||
|
tunnel.6.option.outbound.nickname=gitssh.idk.i2p
|
||||||
|
tunnel.6.option.outbound.quantity=3
|
||||||
|
tunnel.6.sharedClient=false
|
||||||
|
tunnel.6.startOnLoad=false
|
||||||
|
tunnel.6.targetDestination=gitssh.idk.i2p
|
||||||
|
tunnel.6.type=client
|
||||||
|
|
||||||
|
# I2P Git Repositories HTTP Access(Android only)
|
||||||
|
# Disabled by default, useful for Android gitlab clients like labcoat
|
||||||
|
tunnel.7.description=I2P Git Repositories HTTP Access(Android Only)
|
||||||
|
tunnel.7.interface=127.0.0.1
|
||||||
|
tunnel.7.listenPort=7671
|
||||||
|
tunnel.7.name=git.idk.i2p
|
||||||
|
tunnel.7.option.i2cp.closeIdleTime=1800000
|
||||||
|
tunnel.7.option.i2cp.closeOnIdle=false
|
||||||
|
tunnel.7.option.i2cp.delayOpen=true
|
||||||
|
tunnel.7.option.i2cp.destination.sigType=7
|
||||||
|
tunnel.7.option.i2cp.newDestOnResume=false
|
||||||
|
tunnel.7.option.i2cp.reduceIdleTime=1200000
|
||||||
|
tunnel.7.option.i2cp.reduceOnIdle=true
|
||||||
|
tunnel.7.option.i2cp.reduceQuantity=1
|
||||||
|
tunnel.7.option.inbound.backupQuantity=1
|
||||||
|
tunnel.7.option.inbound.length=3
|
||||||
|
tunnel.7.option.inbound.nickname=git.idk.i2p
|
||||||
|
tunnel.7.option.inbound.quantity=3
|
||||||
|
tunnel.7.option.outbound.backupQuantity=1
|
||||||
|
tunnel.7.option.outbound.length=3
|
||||||
|
tunnel.7.option.outbound.nickname=git.idk.i2p
|
||||||
|
tunnel.7.option.outbound.quantity=3
|
||||||
|
tunnel.7.sharedClient=false
|
||||||
|
tunnel.7.startOnLoad=false
|
||||||
|
tunnel.7.targetDestination=ssh.idk.i2p
|
||||||
|
tunnel.7.type=client
|
||||||
|
@ -53,6 +53,10 @@ i2np.bandwidth.outboundKBytesPerSecond=50
|
|||||||
i2np.ntcp.enable=true
|
i2np.ntcp.enable=true
|
||||||
i2np.ntcp.maxConnections=32
|
i2np.ntcp.maxConnections=32
|
||||||
#
|
#
|
||||||
|
# NTCP2
|
||||||
|
#
|
||||||
|
i2np.ntcp2.enable=true
|
||||||
|
#
|
||||||
# UDP
|
# UDP
|
||||||
#
|
#
|
||||||
i2np.udp.enable=true
|
i2np.udp.enable=true
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
http://i2p-projekt.i2p/hosts.txt
|
http://i2p-projekt.i2p/hosts.txt
|
||||||
http://i2host.i2p/cgi-bin/i2hostetag
|
|
||||||
http://stats.i2p/cgi-bin/newhosts.txt
|
http://stats.i2p/cgi-bin/newhosts.txt
|
||||||
|
@ -36,9 +36,8 @@ services. You can also access the normal web anonymously via I2P's built-in web
|
|||||||
proxy (outproxy). <a href="https://geti2p.net/en/about/browser-config"
|
proxy (outproxy). <a href="https://geti2p.net/en/about/browser-config"
|
||||||
target="_blank">Configure your browser</a> to use the HTTP proxy at
|
target="_blank">Configure your browser</a> to use the HTTP proxy at
|
||||||
<code>127.0.0.1 port 4444</code>, then browse to an eepsite or a normal,
|
<code>127.0.0.1 port 4444</code>, then browse to an eepsite or a normal,
|
||||||
unencrypted <code>http://</code> address. For a pre-configured browser, you may
|
unencrypted <code>http://</code> address.
|
||||||
wish to try <a href="http://echelon.i2p/i2pfox/">I2PFox</a>, a custom build of
|
If you wish to
|
||||||
Firefox security hardened and tailored especially for I2P. If you wish to
|
|
||||||
disable or change outproxy access to the normal internet, remove or modify the
|
disable or change outproxy access to the normal internet, remove or modify the
|
||||||
outproxy entry for <code>false.i2p</code> under the <i>Outproxies</i> option in
|
outproxy entry for <code>false.i2p</code> under the <i>Outproxies</i> option in
|
||||||
the <a href="/i2ptunnel/edit?tunnel=0" target="_blank">I2P HTTP Proxy Tunnel
|
the <a href="/i2ptunnel/edit?tunnel=0" target="_blank">I2P HTTP Proxy Tunnel
|
||||||
@ -80,13 +79,13 @@ target="_blank">geti2p.net</a>. If you want to know
|
|||||||
more about how I2P works or how you can participate, this is your first port of
|
more about how I2P works or how you can participate, this is your first port of
|
||||||
call!</li>
|
call!</li>
|
||||||
<li class="tidylist"><b>I2P Community Forums</b><br><a
|
<li class="tidylist"><b>I2P Community Forums</b><br><a
|
||||||
href="http://forum.i2p/" target="_blank">forum.i2p</a>: A secure
|
href="http://i2pforum.i2p/" target="_blank">i2pforum.i2p</a>: A secure
|
||||||
and anonymous online forum community where developers
|
and anonymous online forum community where developers
|
||||||
and users alike discuss problems and ideas relating to I2P and associated
|
and users alike discuss problems and ideas relating to I2P and associated
|
||||||
topics, and <a href="http://zzz.i2p/" target="_blank">zzz's developer
|
topics, and <a href="http://zzz.i2p/" target="_blank">zzz's developer
|
||||||
forums</a> for both end users and developers.</li>
|
forums</a> for both end users and developers.</li>
|
||||||
<li class="tidylist"><b>I2P Anonymous Pastebin</b><br><a
|
<li class="tidylist"><b>I2P Anonymous Pastebin</b><br><a
|
||||||
href="http://pastethis.i2p/" target="_blank">pastethis.i2p</a>: Secure and
|
href="http://paste.idk.i2p/" target="_blank">paste.idk.i2p</a>: Secure and
|
||||||
anonymous paste service allowing anonymous text and text-based code
|
anonymous paste service allowing anonymous text and text-based code
|
||||||
sharing over I2P.</li>
|
sharing over I2P.</li>
|
||||||
<li class="tidylist"><b>Echelon's I2P Resources</b><br><a
|
<li class="tidylist"><b>Echelon's I2P Resources</b><br><a
|
||||||
@ -95,14 +94,6 @@ href="http://echelon.i2p/" target="_blank">echelon.i2p</a>: I2P software
|
|||||||
including a <a href="http://echelon.i2p/I2Pguide/index.html"
|
including a <a href="http://echelon.i2p/I2Pguide/index.html"
|
||||||
target="_blank">beginner's guide</a> and pre-release developer builds of I2P
|
target="_blank">beginner's guide</a> and pre-release developer builds of I2P
|
||||||
for the adventurous to try.</li>
|
for the adventurous to try.</li>
|
||||||
<li class="tidylist"><b>Ugha's Wiki</b><br><a href="http://ugha.i2p/"
|
|
||||||
target="_blank">ugha.i2p</a>: An open wiki that anyone can edit with plenty of
|
|
||||||
information about I2P, help for beginners, additional links into the network,
|
|
||||||
and more.</li>
|
|
||||||
<li class="tidylist"><b>I2P-to-Freenet Proxy</b><br><a
|
|
||||||
href="http://fproxy.tino.i2p/" target="_blank">fproxy.tino.i2p</a>:
|
|
||||||
Peer into the world of the <a href="http://freenetproject.org/"
|
|
||||||
target="_blank">Freenet</a> network with Tino's I2P-to-Freenet proxy.</li>
|
|
||||||
<li class="tidylist"><b>The Planet (on I2P)</b><br><a
|
<li class="tidylist"><b>The Planet (on I2P)</b><br><a
|
||||||
href="http://planet.i2p/" target="_blank">planet.i2p</a>: An RSS aggregator
|
href="http://planet.i2p/" target="_blank">planet.i2p</a>: An RSS aggregator
|
||||||
site that takes news and events from around I2P and publishes them all in one
|
site that takes news and events from around I2P and publishes them all in one
|
||||||
@ -149,23 +140,19 @@ discussion forum</a>,
|
|||||||
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a>, <a
|
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a>, <a
|
||||||
href="irc://127.0.0.1:6668/i2p">#i2p</a> or <a
|
href="irc://127.0.0.1:6668/i2p">#i2p</a> or <a
|
||||||
href="irc://127.0.0.1:6668/i2p-chat">#i2p-chat</a> on I2P's internal IRC
|
href="irc://127.0.0.1:6668/i2p-chat">#i2p-chat</a> on I2P's internal IRC
|
||||||
network (<code>irc.postman.i2p</code> or <code>irc.freshcoffee.i2p</code>).
|
network (<code>irc.postman.i2p</code> or <code>irc.echelon.i2p</code>).
|
||||||
These channels are also available outside of I2P's encrypted, anonymous network
|
These channels are also available outside of I2P's encrypted, anonymous network
|
||||||
via <a href="irc://irc.freenode.net/i2p">Freenode IRC</a>.
|
via <a href="irc://irc.freenode.net/i2p">Freenode IRC</a>.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="tidylist"><b>Reporting Bugs</b><br>If you'd like to report a bug,
|
<li class="tidylist"><b>Reporting Bugs</b><br>If you'd like to report a bug,
|
||||||
please file a ticket on <a href="http://trac.i2p2.i2p/"
|
please file a ticket on <a href="http://git.idk.i2p/"
|
||||||
target="_blank">trac.i2p2.i2p</a>. For developer-related discussions, please
|
target="_blank">git.idk.i2p</a>. For developer-related discussions, please
|
||||||
visit <a href="http://zzz.i2p/" target="_blank">zzz's developer forums</a> or
|
visit <a href="http://zzz.i2p/" target="_blank">zzz's developer forums</a> or
|
||||||
come and visit the <a href="irc://127.0.0.1:6668/i2p-dev">developer channel</a>
|
come and visit the <a href="irc://127.0.0.1:6668/i2p-dev">developer channel</a>
|
||||||
on I2P's IRC network. Developers can browse source at <a
|
on I2P's IRC network. Developers can browse source at <a
|
||||||
href="http://stats.i2p/cgi-bin/viewmtn/" target="_blank">zzz's mtn repository
|
href="git.idk.i2p/i2p-hackers/i2p.i2p/-/commits/master" target="_blank">git.idk.i2p</a> or
|
||||||
viewer</a>, <a href="http://i2host.i2p/cgi-bin/view/branch/changes/i2p.i2p"
|
<a href="https://github.com/i2p/i2p.i2p" target="_blank">GitHub</a>.
|
||||||
target="_blank">Sponge's instance</a>, or via <a
|
|
||||||
href="http://trac.i2p2.i2p/browser" target="_blank">trac.i2p2.i2p</a>. We
|
|
||||||
primarily use <a href="http://i2p-projekt.i2p/monotone.html"
|
|
||||||
target="_blank">monotone</a> to manage our source code.
|
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="tidylist"><b>Get Involved!</b><br>I2P is developed and maintained
|
<li class="tidylist"><b>Get Involved!</b><br>I2P is developed and maintained
|
||||||
@ -188,6 +175,6 @@ page</a> on the website.
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="topness"><a href="#top">[Return to Top]</a></div>
|
<div class="topness"><a href="#top">[Return to Top]</a></div>
|
||||||
<div class="footnote"><hr>Document updated: June 2011</div>
|
<div class="footnote"><hr>Document updated: May 2021</div>
|
||||||
</div>
|
</div>
|
||||||
</body></html>
|
</body></html>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
<string name="button_router_graceful">I2P se fermera dans %s</string>
|
<string name="button_router_graceful">I2P se fermera dans %s</string>
|
||||||
<string name="button_shutdown_now">Appuyer longuement pour arrêter maintenant</string>
|
<string name="button_shutdown_now">Appuyer longuement pour arrêter maintenant</string>
|
||||||
<string name="button_cancel_graceful">Appuyer longuement pour annuler la fermeture</string>
|
<string name="button_cancel_graceful">Appuyer longuement pour annuler la fermeture</string>
|
||||||
<string name="no_internet">Aucune connexion Internet n’est disponible</string>
|
<string name="no_internet">Aucune connexion à Internet n’est disponible</string>
|
||||||
<string name="hidden">caché</string>
|
<string name="hidden">caché</string>
|
||||||
<string name="testing">en test</string>
|
<string name="testing">en test</string>
|
||||||
<string name="firewalled">derrière un pare-feu</string>
|
<string name="firewalled">derrière un pare-feu</string>
|
||||||
@ -54,7 +54,7 @@
|
|||||||
<string name="download">Téléchargement</string>
|
<string name="download">Téléchargement</string>
|
||||||
<string name="upload">Téléversement</string>
|
<string name="upload">Téléversement</string>
|
||||||
<string name="configure_browser_title">Configurer le navigateur ?</string>
|
<string name="configure_browser_title">Configurer le navigateur ?</string>
|
||||||
<string name="configure_browser_for_i2p">Souhaitez-vous configurer un navigateur pour visualiser les sites I2P ? (Vous pouvez aussi le faire plus tard grâce au menu d’aide.)</string>
|
<string name="configure_browser_for_i2p">Voulez-vous configurer un navigateur pour visualiser les sites I2P ? (Vous pouvez aussi le faire plus tard grâce au menu d’aide.)</string>
|
||||||
<string name="configure_no_doze_title">Gérer les optimisations de la pile ?</string>
|
<string name="configure_no_doze_title">Gérer les optimisations de la pile ?</string>
|
||||||
<string name="configure_no_doze">I2P fonctionne mieux s’il fonctionne en permanence. Pour empêcher qu’Android ferme I2P quand il essaie d’économiser l’énergie, vous pouvez ajouter I2P à la liste d’exception de la pile. La fiabilité de l’appli s’en trouvera grandement améliorée.\n\nGarder I2P en fonction en arrière-plan ? (recommandé)</string>
|
<string name="configure_no_doze">I2P fonctionne mieux s’il fonctionne en permanence. Pour empêcher qu’Android ferme I2P quand il essaie d’économiser l’énergie, vous pouvez ajouter I2P à la liste d’exception de la pile. La fiabilité de l’appli s’en trouvera grandement améliorée.\n\nGarder I2P en fonction en arrière-plan ? (recommandé)</string>
|
||||||
<string name="first_start_title">Félicitations pour votre installation d’I2P !</string>
|
<string name="first_start_title">Félicitations pour votre installation d’I2P !</string>
|
||||||
@ -82,11 +82,11 @@
|
|||||||
<string name="view_news">Toucher pour voir les dernières nouvelles d’I2P</string>
|
<string name="view_news">Toucher pour voir les dernières nouvelles d’I2P</string>
|
||||||
<string name="router_not_running">Le routeur ne fonctionne pas.</string>
|
<string name="router_not_running">Le routeur ne fonctionne pas.</string>
|
||||||
<string name="router_shutting_down">Le routeur s’éteint.</string>
|
<string name="router_shutting_down">Le routeur s’éteint.</string>
|
||||||
<string name="stats_not_ready">Le gestionnaire de statistiques n’est pas encore prêt. Ressayer ultérieurement.</string>
|
<string name="stats_not_ready">Le gestionnaire de statistiques n’est pas encore prêt. Réessayer plus tard.</string>
|
||||||
<string name="select_an_address">Sélectionner une adresse.</string>
|
<string name="select_an_address">Sélectionner une adresse.</string>
|
||||||
<string name="no_graphs_configured">Aucun graphique n’a été configuré. Vous pouvez choisir les statistiques à graphiquer dans le menu des paramètres. Tout changement prendra effet après 60 secondes.</string>
|
<string name="no_graphs_configured">Aucun graphique n’a été configuré. Vous pouvez choisir les statistiques à graphiquer dans le menu des paramètres. Tout changement prendra effet après 60 secondes.</string>
|
||||||
<string name="configure_graphs">Configurer les graphiques</string>
|
<string name="configure_graphs">Configurer les graphiques</string>
|
||||||
<string name="graphs_not_ready">Les graphiques ne sont pas encore prêts. Ressayer ultérieurement.</string>
|
<string name="graphs_not_ready">Les graphiques ne sont pas encore prêts. Réessayer plus tard.</string>
|
||||||
<string name="statistics">Statistiques</string>
|
<string name="statistics">Statistiques</string>
|
||||||
<string name="routers">Routeurs</string>
|
<string name="routers">Routeurs</string>
|
||||||
<string name="leasesets">Jeux de baux</string>
|
<string name="leasesets">Jeux de baux</string>
|
||||||
@ -171,8 +171,8 @@
|
|||||||
<string name="about_project">Page d’accueil du projet :</string>
|
<string name="about_project">Page d’accueil du projet :</string>
|
||||||
<string name="about_bugs">Bogues et assistance :</string>
|
<string name="about_bugs">Bogues et assistance :</string>
|
||||||
<string name="about_helpwanted">Aide recherchée !</string>
|
<string name="about_helpwanted">Aide recherchée !</string>
|
||||||
<string name="about_volunteer">Souhaitez-vous aider à améliorer l’appli ? Portez-vous volontaire sur le forum Android :</string>
|
<string name="about_volunteer">Voulez-vous aider à améliorer l’appli ? Portez-vous volontaire sur le forum Android :</string>
|
||||||
<string name="about_donate">Souhaitez-vous faire un don en argent ou en bitcoins pour acheter plus d’appareils Android pour le développement et les tests ? Rendez-vous sur :</string>
|
<string name="about_donate">Voulez-vous faire un don en argent ou en bitcoins pour acheter plus d’appareils Android pour le développement et les tests ? Rendez-vous sur :</string>
|
||||||
<string name="menu_help">Aide</string>
|
<string name="menu_help">Aide</string>
|
||||||
<string name="general">Général</string>
|
<string name="general">Général</string>
|
||||||
<string name="label_router">Adresses publiques</string>
|
<string name="label_router">Adresses publiques</string>
|
||||||
@ -201,7 +201,7 @@
|
|||||||
<string name="i2ptunnel_type_streamrserver">Serveur Streamr</string>
|
<string name="i2ptunnel_type_streamrserver">Serveur Streamr</string>
|
||||||
<string name="i2ptunnel_type_httpbidirserver">Bidir HTTP</string>
|
<string name="i2ptunnel_type_httpbidirserver">Bidir HTTP</string>
|
||||||
<string name="install_recommended_app">Installer l’appli recommandée ?</string>
|
<string name="install_recommended_app">Installer l’appli recommandée ?</string>
|
||||||
<string name="app_needed_for_this_tunnel_type">Vous devez installer une appli pour utiliser ce tunnel. Souhaitez-vous installer l’appli recommandée ?</string>
|
<string name="app_needed_for_this_tunnel_type">Vous devez installer une appli pour utiliser ce tunnel. Voulez-vous installer l’appli recommandée ?</string>
|
||||||
<string name="i2ptunnel_not_initialized">Les tunnels ne sont pas encore initialisés, veuillez recharger dans deux minutes.</string>
|
<string name="i2ptunnel_not_initialized">Les tunnels ne sont pas encore initialisés, veuillez recharger dans deux minutes.</string>
|
||||||
<string name="no_configured_client_tunnels">Aucun tunnel client n’est configuré.</string>
|
<string name="no_configured_client_tunnels">Aucun tunnel client n’est configuré.</string>
|
||||||
<string name="no_configured_server_tunnels">Aucun tunnel serveur n’est configuré.</string>
|
<string name="no_configured_server_tunnels">Aucun tunnel serveur n’est configuré.</string>
|
||||||
|
@ -55,6 +55,8 @@
|
|||||||
<string name="upload">Wysyłanie</string>
|
<string name="upload">Wysyłanie</string>
|
||||||
<string name="configure_browser_title">Konfigurować przeglądarkę?</string>
|
<string name="configure_browser_title">Konfigurować przeglądarkę?</string>
|
||||||
<string name="configure_browser_for_i2p">Czy chciałbyś skonfigurować przeglądarkę, aby przeglądać strony I2P? (Możesz to zrobić później w wybierająć pomoc z menu.)</string>
|
<string name="configure_browser_for_i2p">Czy chciałbyś skonfigurować przeglądarkę, aby przeglądać strony I2P? (Możesz to zrobić później w wybierająć pomoc z menu.)</string>
|
||||||
|
<string name="configure_no_doze_title">Czy wyłączyć optymalizację baterii?</string>
|
||||||
|
<string name="configure_no_doze">Aplikacja I2P działa najlepiej gdy działa bez przerwy. Aby system Android nie usypiał aplikacji I2P w celu oszczędzania energii, należy dodać ją do listy wyjątków. Znacząco większy to niezawodność aplikacji.\n\nCzy pozwolić aplikacji I2P działać w tle? (zalecane)</string>
|
||||||
<string name="first_start_title">Gratulacje, zainstalowałeś I2P!</string>
|
<string name="first_start_title">Gratulacje, zainstalowałeś I2P!</string>
|
||||||
<string name="first_start_welcome"><b>Witamy w I2P!</b> Proszę <b>bądz cierpliwy</b> bo I2P właśnie się uruchamia i szuka peerów.</string>
|
<string name="first_start_welcome"><b>Witamy w I2P!</b> Proszę <b>bądz cierpliwy</b> bo I2P właśnie się uruchamia i szuka peerów.</string>
|
||||||
<string name="first_start_read">W międzyczasie, prosimy o zapoznanie się z notatkami tego wydania oraz stroną powitalną.</string>
|
<string name="first_start_read">W międzyczasie, prosimy o zapoznanie się z notatkami tego wydania oraz stroną powitalną.</string>
|
||||||
@ -145,6 +147,7 @@
|
|||||||
<string name="settings_label_transports">Transporty</string>
|
<string name="settings_label_transports">Transporty</string>
|
||||||
<string name="settings_label_maxConns">Maksymalna liczba połączeń</string>
|
<string name="settings_label_maxConns">Maksymalna liczba połączeń</string>
|
||||||
<string name="settings_label_i2cp">Interfejs I2CP</string>
|
<string name="settings_label_i2cp">Interfejs I2CP</string>
|
||||||
|
<string name="settings_desc_i2cp">Zezwól aplikacjom stron trzecich na tworzenie tuneli (wymaga restartu węzła)</string>
|
||||||
<string name="settings_label_exploratory_pool">Pole rozpoznawcze</string>
|
<string name="settings_label_exploratory_pool">Pole rozpoznawcze</string>
|
||||||
<string name="settings_desc_exploratory_pool">Parametry tuneli</string>
|
<string name="settings_desc_exploratory_pool">Parametry tuneli</string>
|
||||||
<string name="settings_label_expl_inbound">Tunele przychodzące</string>
|
<string name="settings_label_expl_inbound">Tunele przychodzące</string>
|
||||||
|
@ -47,22 +47,22 @@
|
|||||||
<string name="active_peers">Активные узлы</string>
|
<string name="active_peers">Активные узлы</string>
|
||||||
<string name="known_peers">Известные узлы</string>
|
<string name="known_peers">Известные узлы</string>
|
||||||
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
|
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
|
||||||
<string name="char_client_tunnel">K</string>
|
<string name="char_client_tunnel">C</string>
|
||||||
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
|
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
|
||||||
<string name="char_server_tunnel">С</string>
|
<string name="char_server_tunnel">S</string>
|
||||||
<string name="no_tunnels_running">Нет ни одного запущенного туннеля.</string>
|
<string name="no_tunnels_running">Нет ни одного запущенного туннеля.</string>
|
||||||
<string name="download">Получено</string>
|
<string name="download">Получено</string>
|
||||||
<string name="upload">Передано</string>
|
<string name="upload">Передано</string>
|
||||||
<string name="configure_browser_title">Настроить браузер?</string>
|
<string name="configure_browser_title">Настроить браузер?</string>
|
||||||
<string name="configure_browser_for_i2p">Настроить браузер для просмотра I2P сайтов? (Вы сможете сделать это позже из меню \"Справка\")</string>
|
<string name="configure_browser_for_i2p">Настроить браузер для просмотра I2P сайтов? (Вы сможете сделать это позже из меню \"Справка\")</string>
|
||||||
<string name="configure_no_doze_title">Управлять оптимизацией энергосбережения?</string>
|
<string name="configure_no_doze_title">Управлять оптимизацией энергосбережения?</string>
|
||||||
<string name="configure_no_doze">I2P работает лучше всего когда постоянно запущен. Для предотвращения закрытия I2P системой вы можете добавить его в список исключения оптимизации. Это существенно увеличит надёжность приложения. Оставить I2P работать в фоне? (рекомендуется)</string>
|
<string name="configure_no_doze">I2P работает лучше всего, когда постоянно запущен. Для предотвращения закрытия I2P системой вы можете добавить его в список исключений оптимизации. Это существенно увеличит надёжность приложения. Оставить I2P работать в фоне? (рекомендуется)</string>
|
||||||
<string name="first_start_title">Поздравляем с установкой I2P!</string>
|
<string name="first_start_title">Поздравляем с установкой I2P!</string>
|
||||||
<string name="first_start_welcome"><b>Добро пожаловать в I2P!</b> Пожалуйста, <b>дождитесь</b> пока I2P загрузится и найдет узлы.</string>
|
<string name="first_start_welcome"><b>Добро пожаловать в I2P!</b> Пожалуйста, <b>дождитесь</b> пока I2P загрузится и найдет узлы.</string>
|
||||||
<string name="first_start_read">Пока вы ждете, пожалуйста, прочтите информацию о релизе и страницу приветствия.</string>
|
<string name="first_start_read">Пока вы ждете, пожалуйста, прочтите информацию о релизе и страницу приветствия.</string>
|
||||||
<string name="first_start_faq">Как только у вас появятся клиентские туннели, пожалуйста, <b>посмотрите</b> раздел FAQ:</string>
|
<string name="first_start_faq">Как только у вас появятся клиентские туннели, пожалуйста, <b>посмотрите</b> раздел FAQ:</string>
|
||||||
<string name="first_start_faq_nonanon">Или используйте эту не анонимную ссылку, если вы не хотите ждать создания туннелей:</string>
|
<string name="first_start_faq_nonanon">Или используйте эту неанонимную ссылку, если вы не хотите ждать создания туннелей:</string>
|
||||||
<string name="first_start_irc">Настройте свой клиент IRC на <b>localhost:6668</b> и скажите нам привет:</string>
|
<string name="first_start_irc">Настройте свой клиент IRC на <b>localhost:6668</b> и поздоровайтесь с нами:</string>
|
||||||
<string name="action_search">Поиск</string>
|
<string name="action_search">Поиск</string>
|
||||||
<string name="action_add">Добавить</string>
|
<string name="action_add">Добавить</string>
|
||||||
<string name="action_edit">Изменить</string>
|
<string name="action_edit">Изменить</string>
|
||||||
@ -137,10 +137,10 @@
|
|||||||
<string name="settings_dialog_sharePercent">Процент пропускной способности на раздачу</string>
|
<string name="settings_dialog_sharePercent">Процент пропускной способности на раздачу</string>
|
||||||
<string name="settings_desc_upnp">Автооткрытие портов брандмауэра</string>
|
<string name="settings_desc_upnp">Автооткрытие портов брандмауэра</string>
|
||||||
<string name="settings_label_logging">Журналирование</string>
|
<string name="settings_label_logging">Журналирование</string>
|
||||||
<string name="settings_label_default_log_level">Уровень журналирования по-умолчанию</string>
|
<string name="settings_label_default_log_level">Уровень журналирования по умолчанию</string>
|
||||||
<string name="settings_label_appearance">Внешний вид</string>
|
<string name="settings_label_appearance">Внешний вид</string>
|
||||||
<string name="settings_label_language">Язык</string>
|
<string name="settings_label_language">Язык</string>
|
||||||
<string name="settings_default">По-умолчанию</string>
|
<string name="settings_default">По умолчанию</string>
|
||||||
<string name="settings_label_advanced">Расширенные</string>
|
<string name="settings_label_advanced">Расширенные</string>
|
||||||
<string name="settings_label_showStats">Статистика маршрутизатора</string>
|
<string name="settings_label_showStats">Статистика маршрутизатора</string>
|
||||||
<string name="settings_summ_showStats">Показать расширенную статистику в главной консоли</string>
|
<string name="settings_summ_showStats">Показать расширенную статистику в главной консоли</string>
|
||||||
@ -171,8 +171,8 @@
|
|||||||
<string name="about_project">Сайт проекта:</string>
|
<string name="about_project">Сайт проекта:</string>
|
||||||
<string name="about_bugs">Ошибки и поддержка:</string>
|
<string name="about_bugs">Ошибки и поддержка:</string>
|
||||||
<string name="about_helpwanted">Требуется помощь!</string>
|
<string name="about_helpwanted">Требуется помощь!</string>
|
||||||
<string name="about_volunteer">Хотите помочь улучшить приложение? Добровольцы на Android форуме:</string>
|
<string name="about_volunteer">Хотите помочь улучшить приложение? Добровольцы на Android-форуме:</string>
|
||||||
<string name="about_donate">Хотите пожертвовать деньги или bitcoins на покупку дополнительных Android устройств для разработчиков и тестировщиков? Зайдите:</string>
|
<string name="about_donate">Хотите пожертвовать деньги или bitcoins на покупку дополнительных Android-устройств для разработчиков и тестировщиков? Зайдите:</string>
|
||||||
<string name="menu_help">Справка</string>
|
<string name="menu_help">Справка</string>
|
||||||
<string name="general">Общие</string>
|
<string name="general">Общие</string>
|
||||||
<string name="label_router">Публичные адреса</string>
|
<string name="label_router">Публичные адреса</string>
|
||||||
@ -187,7 +187,7 @@
|
|||||||
<string name="nsu_iae_cannot_start_with">Имя узла не может начинаться с \"%s\"</string>
|
<string name="nsu_iae_cannot_start_with">Имя узла не может начинаться с \"%s\"</string>
|
||||||
<string name="nsu_iae_cannot_end_with">Имя узла не может заканчиваться \"%s\"</string>
|
<string name="nsu_iae_cannot_end_with">Имя узла не может заканчиваться \"%s\"</string>
|
||||||
<string name="nsu_iae_cannot_contain">Имя узла не может содержать \"%s\"</string>
|
<string name="nsu_iae_cannot_contain">Имя узла не может содержать \"%s\"</string>
|
||||||
<string name="nsu_iae_requires_conversion">Имя узла \"%s\" необходимо преобразовать в ASCII, но соответствующая библиотека не доступна в этой версии Android</string>
|
<string name="nsu_iae_requires_conversion">Имя узла \"%s\" необходимо преобразовать в ASCII, но соответствующая библиотека недоступна в этой версии Android</string>
|
||||||
<string name="i2ptunnel_type_client">Стандартный клиент</string>
|
<string name="i2ptunnel_type_client">Стандартный клиент</string>
|
||||||
<string name="i2ptunnel_type_httpclient">HTTP клиент</string>
|
<string name="i2ptunnel_type_httpclient">HTTP клиент</string>
|
||||||
<string name="i2ptunnel_type_ircclient">IRC клиент</string>
|
<string name="i2ptunnel_type_ircclient">IRC клиент</string>
|
||||||
@ -202,7 +202,7 @@
|
|||||||
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
|
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
|
||||||
<string name="install_recommended_app">Установить рекомендованное приложение?</string>
|
<string name="install_recommended_app">Установить рекомендованное приложение?</string>
|
||||||
<string name="app_needed_for_this_tunnel_type">Требуется установить приложение для использования этого туннеля. Хотите установить рекомендованное приложение?</string>
|
<string name="app_needed_for_this_tunnel_type">Требуется установить приложение для использования этого туннеля. Хотите установить рекомендованное приложение?</string>
|
||||||
<string name="i2ptunnel_not_initialized">Туннели еще не инициализированы, пожалуйста, обновите через пару минут</string>
|
<string name="i2ptunnel_not_initialized">Туннели еще не инициализированы, пожалуйста, обновите через пару минут.</string>
|
||||||
<string name="no_configured_client_tunnels">Нет настроенных клиентских туннелей.</string>
|
<string name="no_configured_client_tunnels">Нет настроенных клиентских туннелей.</string>
|
||||||
<string name="no_configured_server_tunnels">Нет настроенных серверных туннелей.</string>
|
<string name="no_configured_server_tunnels">Нет настроенных серверных туннелей.</string>
|
||||||
<string name="i2ptunnel_new_tunnel">Создать туннель</string>
|
<string name="i2ptunnel_new_tunnel">Создать туннель</string>
|
||||||
@ -244,7 +244,7 @@
|
|||||||
<string name="i2ptunnel_wizard_submit_confirm_button">Создать туннель</string>
|
<string name="i2ptunnel_wizard_submit_confirm_button">Создать туннель</string>
|
||||||
<string name="i2ptunnel_view_target">Цель</string>
|
<string name="i2ptunnel_view_target">Цель</string>
|
||||||
<string name="i2ptunnel_view_access_point">Точка доступа</string>
|
<string name="i2ptunnel_view_access_point">Точка доступа</string>
|
||||||
<string name="i2ptunnel_view_autostart">Авто-запуск</string>
|
<string name="i2ptunnel_view_autostart">Автозапуск</string>
|
||||||
<string name="address_copied_to_clipboard">Адрес скопирован в буфер обмена</string>
|
<string name="address_copied_to_clipboard">Адрес скопирован в буфер обмена</string>
|
||||||
<string name="edit_tunnel">Изменить туннель</string>
|
<string name="edit_tunnel">Изменить туннель</string>
|
||||||
<string name="name">Имя</string>
|
<string name="name">Имя</string>
|
||||||
@ -275,7 +275,7 @@
|
|||||||
<string name="tunnel_summ_use_ssl">Использовать SSL для подключения к цели</string>
|
<string name="tunnel_summ_use_ssl">Использовать SSL для подключения к цели</string>
|
||||||
<string name="tunnel_parameters">Параметры туннеля</string>
|
<string name="tunnel_parameters">Параметры туннеля</string>
|
||||||
<string name="profile">Профиль</string>
|
<string name="profile">Профиль</string>
|
||||||
<string name="profile_bulk">Массовое соединение (для загрузок/вебсайтов/P2P)</string>
|
<string name="profile_bulk">Массовое соединение (для загрузок/веб-сайтов/P2P)</string>
|
||||||
<string name="profile_interactive">Интерактивное соединение</string>
|
<string name="profile_interactive">Интерактивное соединение</string>
|
||||||
<string name="delay_connect">Задержка подключения</string>
|
<string name="delay_connect">Задержка подключения</string>
|
||||||
<string name="tunnel_summ_delay_connect">Включить для запроса/ответа соединений</string>
|
<string name="tunnel_summ_delay_connect">Включить для запроса/ответа соединений</string>
|
||||||
|
@ -56,7 +56,9 @@ Läs utgåvenoteringar och licens-information.</string>
|
|||||||
<string name="upload">Ladda upp</string>
|
<string name="upload">Ladda upp</string>
|
||||||
<string name="configure_browser_title">Konfigurera webbläsaren?</string>
|
<string name="configure_browser_title">Konfigurera webbläsaren?</string>
|
||||||
<string name="configure_browser_for_i2p">Vill du konfigurera en browser för att se på I2P-sidor? (Du kan också göra detta senare från hjälpmenyn.)</string>
|
<string name="configure_browser_for_i2p">Vill du konfigurera en browser för att se på I2P-sidor? (Du kan också göra detta senare från hjälpmenyn.)</string>
|
||||||
<string name="first_start_title">Gratulerar till din I2P installation!</string>
|
<string name="configure_no_doze_title">Hantera batterioptimeringar?</string>
|
||||||
|
<string name="configure_no_doze">I2P fungerar bäst om den fortsätter att fungera. För att förhindra att Android stänger I2P när du försöker spara ström kan du lägga till den i listan över undantag från batterier. Detta kommer att förbättra applikationens tillförlitlighet avsevärt.\n\nHålla I2P igång i bakgrunden? (rekommenderad)</string>
|
||||||
|
<string name="first_start_title">Gratulerar till din I2P-installation!</string>
|
||||||
<string name="first_start_welcome"><b>Välkommen till I2P!</b> Vänligen <b>ha tålamod</b> medan I2P startar och letar upp noder.</string>
|
<string name="first_start_welcome"><b>Välkommen till I2P!</b> Vänligen <b>ha tålamod</b> medan I2P startar och letar upp noder.</string>
|
||||||
<string name="first_start_read">Medan du väntar, vänligen läs utgåvans meddelanden och välkomstsidan.</string>
|
<string name="first_start_read">Medan du väntar, vänligen läs utgåvans meddelanden och välkomstsidan.</string>
|
||||||
<string name="first_start_faq">När du har fått klienttunnlar, vänligen <b>kolla</b> våra vanliga frågor:</string>
|
<string name="first_start_faq">När du har fått klienttunnlar, vänligen <b>kolla</b> våra vanliga frågor:</string>
|
||||||
@ -146,6 +148,7 @@ Läs utgåvenoteringar och licens-information.</string>
|
|||||||
<string name="settings_label_transports">Transporter</string>
|
<string name="settings_label_transports">Transporter</string>
|
||||||
<string name="settings_label_maxConns">Max anslutningar</string>
|
<string name="settings_label_maxConns">Max anslutningar</string>
|
||||||
<string name="settings_label_i2cp">I2CP interfrace</string>
|
<string name="settings_label_i2cp">I2CP interfrace</string>
|
||||||
|
<string name="settings_desc_i2cp">Tillåt tredjepartsappar att skapa tunnlar (kräver omstart av routern)</string>
|
||||||
<string name="settings_label_exploratory_pool">Utforskande pool</string>
|
<string name="settings_label_exploratory_pool">Utforskande pool</string>
|
||||||
<string name="settings_desc_exploratory_pool">Tunnelparametrar</string>
|
<string name="settings_desc_exploratory_pool">Tunnelparametrar</string>
|
||||||
<string name="settings_label_expl_inbound">Inåtgående tunnlar</string>
|
<string name="settings_label_expl_inbound">Inåtgående tunnlar</string>
|
||||||
@ -173,7 +176,7 @@ Läs utgåvenoteringar och licens-information.</string>
|
|||||||
<string name="about_donate">Vill du donera pengar eller bitcoin för inköp av fler Androidenheter till utveckling och testning? Gå till:</string>
|
<string name="about_donate">Vill du donera pengar eller bitcoin för inköp av fler Androidenheter till utveckling och testning? Gå till:</string>
|
||||||
<string name="menu_help">Hjälp</string>
|
<string name="menu_help">Hjälp</string>
|
||||||
<string name="general">Generell</string>
|
<string name="general">Generell</string>
|
||||||
<string name="label_router">Offentliga adresser</string>
|
<string name="label_router">Publika adresser</string>
|
||||||
<string name="label_private">Privata adresser</string>
|
<string name="label_private">Privata adresser</string>
|
||||||
<string name="addressbook_is_empty">Adressboken är tom</string>
|
<string name="addressbook_is_empty">Adressboken är tom</string>
|
||||||
<string name="addressbook_search_header">%s hittade</string>
|
<string name="addressbook_search_header">%s hittade</string>
|
||||||
@ -210,6 +213,7 @@ Läs utgåvenoteringar och licens-information.</string>
|
|||||||
<string name="i2ptunnel_msg_tunnel_stopping">Stannar tunnel</string>
|
<string name="i2ptunnel_msg_tunnel_stopping">Stannar tunnel</string>
|
||||||
<string name="i2ptunnel_delete_confirm_message">Radera tunnel?</string>
|
<string name="i2ptunnel_delete_confirm_message">Radera tunnel?</string>
|
||||||
<string name="i2ptunnel_delete_confirm_button">Radera tunnel</string>
|
<string name="i2ptunnel_delete_confirm_button">Radera tunnel</string>
|
||||||
|
<string name="i2ptunnel_no_tunnel_details">Det gick inte att läsa in detaljer i tunneln</string>
|
||||||
<string name="i2ptunnel_wizard_k_client_server">Klient eller Server</string>
|
<string name="i2ptunnel_wizard_k_client_server">Klient eller Server</string>
|
||||||
<string name="i2ptunnel_wizard_v_client">Klienttunnel</string>
|
<string name="i2ptunnel_wizard_v_client">Klienttunnel</string>
|
||||||
<string name="i2ptunnel_wizard_v_server">Servertunnel</string>
|
<string name="i2ptunnel_wizard_v_server">Servertunnel</string>
|
||||||
@ -242,6 +246,7 @@ Läs utgåvenoteringar och licens-information.</string>
|
|||||||
<string name="i2ptunnel_view_target">Mål</string>
|
<string name="i2ptunnel_view_target">Mål</string>
|
||||||
<string name="i2ptunnel_view_access_point">Accesspunkt</string>
|
<string name="i2ptunnel_view_access_point">Accesspunkt</string>
|
||||||
<string name="i2ptunnel_view_autostart">Auto-start</string>
|
<string name="i2ptunnel_view_autostart">Auto-start</string>
|
||||||
|
<string name="address_copied_to_clipboard">Adressen kopierades till urklipp</string>
|
||||||
<string name="edit_tunnel">Redigera tunnel</string>
|
<string name="edit_tunnel">Redigera tunnel</string>
|
||||||
<string name="name">Namn</string>
|
<string name="name">Namn</string>
|
||||||
<string name="description">Beskrivning</string>
|
<string name="description">Beskrivning</string>
|
||||||
@ -352,5 +357,6 @@ Läs utgåvenoteringar och licens-information.</string>
|
|||||||
<string name="error_logs_copied_to_clipboard">Error loggar kopierade till urklipp</string>
|
<string name="error_logs_copied_to_clipboard">Error loggar kopierade till urklipp</string>
|
||||||
<string name="logs_copied_to_clipboard">Loggar kopierade till urklipp</string>
|
<string name="logs_copied_to_clipboard">Loggar kopierade till urklipp</string>
|
||||||
<string name="label_browser_configuration">Browser konfiguration</string>
|
<string name="label_browser_configuration">Browser konfiguration</string>
|
||||||
|
<string name="no_market_app">Ingen marknadsapp hittades. Installera manuellt</string>
|
||||||
<string name="unset">Återställ</string>
|
<string name="unset">Återställ</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
<string name="app_name">I2P</string>
|
<string name="app_name">I2P</string>
|
||||||
<string name="desc_i2p_logo">I2P logosu</string>
|
<string name="desc_i2p_logo">I2P logosu</string>
|
||||||
<string name="choose_language">Dil seçin</string>
|
<string name="choose_language">Dil seçin</string>
|
||||||
<string name="welcome_new_install">I2P dünyasına hoş geldiniz. Bu uygulama henüz ALPHA geliştirme düzeyindedir ve güçlü bir isimsiz kalma özelliği sağlamamaktadır. Lütfen yayım notlarını ve lisans bilgilerini okuyun.</string>
|
<string name="welcome_new_install">I2P dünyasına hoş geldiniz. Bu uygulama henüz ALPHA geliştirme düzeyindedir ve güçlü bir anonim kalma özelliği sağlamamaktadır. Lütfen yayım notlarını ve lisans bilgilerini okuyun.</string>
|
||||||
<string name="welcome_new_version">Yeni sürüm kuruldu. Lütfen yayım notlarını okuyun. Sürüm:</string>
|
<string name="welcome_new_version">Yeni sürüm kuruldu. Lütfen yayım notlarını okuyun. Sürüm:</string>
|
||||||
<string name="label_tunnels">Tüneller</string>
|
<string name="label_tunnels">Tüneller</string>
|
||||||
<string name="label_status">Durum</string>
|
<string name="label_status">Durum</string>
|
||||||
<string name="label_console">Konsol</string>
|
<string name="label_console">Pano</string>
|
||||||
<string name="label_addresses">Adresler</string>
|
<string name="label_addresses">Adresler</string>
|
||||||
<string name="label_addressbook">Adres Defteri</string>
|
<string name="label_addressbook">Adres Defteri</string>
|
||||||
<string name="label_i2ptunnel_client">İstemci tünelleri</string>
|
<string name="label_i2ptunnel_client">İstemci tünelleri</string>
|
||||||
@ -61,7 +61,7 @@
|
|||||||
<string name="first_start_welcome"><b>I2P Yazılımına Hoşgeldiniz</b> Lütfen I2P yüklenip eşleri bulana kadar <b>sabırlı olun</b>.</string>
|
<string name="first_start_welcome"><b>I2P Yazılımına Hoşgeldiniz</b> Lütfen I2P yüklenip eşleri bulana kadar <b>sabırlı olun</b>.</string>
|
||||||
<string name="first_start_read">Beklerken, lütfen sürüm notları ve hoş geldiniz sayfalarını okuyun.</string>
|
<string name="first_start_read">Beklerken, lütfen sürüm notları ve hoş geldiniz sayfalarını okuyun.</string>
|
||||||
<string name="first_start_faq">İstemci tünelleri bulunduğunda, lütfen Sık Sorulan Sorular bölümüne <b>bakın</b>:</string>
|
<string name="first_start_faq">İstemci tünelleri bulunduğunda, lütfen Sık Sorulan Sorular bölümüne <b>bakın</b>:</string>
|
||||||
<string name="first_start_faq_nonanon">Ya da tünelleri beklemek istemiyorsanız isimsiz olmayan şu bağlantıyı kullanın:</string>
|
<string name="first_start_faq_nonanon">Ya da tünelleri beklemek istemiyorsanız anonim olmayan şu bağlantıyı kullanın:</string>
|
||||||
<string name="first_start_irc">IRC istemcinizi <b>localhost:6668</b> adresine yönlendirip şuradan bize merhaba deyin:</string>
|
<string name="first_start_irc">IRC istemcinizi <b>localhost:6668</b> adresine yönlendirip şuradan bize merhaba deyin:</string>
|
||||||
<string name="action_search">Arama</string>
|
<string name="action_search">Arama</string>
|
||||||
<string name="action_add">Ekle</string>
|
<string name="action_add">Ekle</string>
|
||||||
@ -143,7 +143,7 @@
|
|||||||
<string name="settings_default">Varsayılan</string>
|
<string name="settings_default">Varsayılan</string>
|
||||||
<string name="settings_label_advanced">Gelişmiş</string>
|
<string name="settings_label_advanced">Gelişmiş</string>
|
||||||
<string name="settings_label_showStats">Yöneltici istatistikleri</string>
|
<string name="settings_label_showStats">Yöneltici istatistikleri</string>
|
||||||
<string name="settings_summ_showStats">Ana konsolda ayrıntılı istatistikler görüntülensin</string>
|
<string name="settings_summ_showStats">Ana panoda ayrıntılı istatistikler görüntülensin</string>
|
||||||
<string name="settings_label_transports">Aktarımlar</string>
|
<string name="settings_label_transports">Aktarımlar</string>
|
||||||
<string name="settings_label_maxConns">En fazla bağlantı</string>
|
<string name="settings_label_maxConns">En fazla bağlantı</string>
|
||||||
<string name="settings_label_i2cp">I2CP Arabirimi</string>
|
<string name="settings_label_i2cp">I2CP Arabirimi</string>
|
||||||
@ -153,11 +153,11 @@
|
|||||||
<string name="settings_label_expl_inbound">Geliş tünelleri</string>
|
<string name="settings_label_expl_inbound">Geliş tünelleri</string>
|
||||||
<string name="settings_label_expl_outbound">Gidiş tünelleri</string>
|
<string name="settings_label_expl_outbound">Gidiş tünelleri</string>
|
||||||
<string name="settings_label_expl_length">Uzunluk</string>
|
<string name="settings_label_expl_length">Uzunluk</string>
|
||||||
<string name="settings_summ_expl_length">%s sıçrama</string>
|
<string name="settings_summ_expl_length">%s durak</string>
|
||||||
<string name="settings_desc_expl_length">Kullanılacak sıçrama sayısı</string>
|
<string name="settings_desc_expl_length">Kullanılacak durak sayısı</string>
|
||||||
<string name="settings_label_expl_lengthVariance">Sıçrama çeşitliliği</string>
|
<string name="settings_label_expl_lengthVariance">Durak çeşitliliği</string>
|
||||||
<string name="settings_summ_expl_lengthVariance">%s</string>
|
<string name="settings_summ_expl_lengthVariance">%s</string>
|
||||||
<string name="settings_desc_expl_lengthVariance">Rastgele eklenecek sıçrama sayısı</string>
|
<string name="settings_desc_expl_lengthVariance">Rastgele eklenecek durak sayısı</string>
|
||||||
<string name="settings_label_expl_quantity">Sayı</string>
|
<string name="settings_label_expl_quantity">Sayı</string>
|
||||||
<string name="settings_summ_expl_quantity">%s tünel</string>
|
<string name="settings_summ_expl_quantity">%s tünel</string>
|
||||||
<string name="settings_desc_expl_quantity">Tünel sayısı</string>
|
<string name="settings_desc_expl_quantity">Tünel sayısı</string>
|
||||||
@ -328,7 +328,7 @@
|
|||||||
<string name="tunnel_summ_referer">\'Referer\' üstbilgisi geçirilsin</string>
|
<string name="tunnel_summ_referer">\'Referer\' üstbilgisi geçirilsin</string>
|
||||||
<string name="tunnel_summ_accept">\'Accept-*\' üstbilgisi geçirilsin</string>
|
<string name="tunnel_summ_accept">\'Accept-*\' üstbilgisi geçirilsin</string>
|
||||||
<string name="tunnel_summ_allow_ssl">I2P adreslerinde SSL kullanılabilsin</string>
|
<string name="tunnel_summ_allow_ssl">I2P adreslerinde SSL kullanılabilsin</string>
|
||||||
<string name="jump_url_list">Adresi listesine sıçra</string>
|
<string name="jump_url_list">Sıçrama adresi listesi</string>
|
||||||
<string name="proxy_auth">Vekil sunucu kimlik doğrulaması</string>
|
<string name="proxy_auth">Vekil sunucu kimlik doğrulaması</string>
|
||||||
<string name="tunnel_summ_proxy_auth">Bu vekil sunucuda oturum açmak için kimlik doğrulaması istensin</string>
|
<string name="tunnel_summ_proxy_auth">Bu vekil sunucuda oturum açmak için kimlik doğrulaması istensin</string>
|
||||||
<string name="username">Kullanıcı Adı</string>
|
<string name="username">Kullanıcı Adı</string>
|
||||||
|
@ -55,6 +55,7 @@
|
|||||||
<string name="upload">Вивантажено</string>
|
<string name="upload">Вивантажено</string>
|
||||||
<string name="configure_browser_title">Налаштувати браузер?</string>
|
<string name="configure_browser_title">Налаштувати браузер?</string>
|
||||||
<string name="configure_browser_for_i2p">Бажаєте налаштувати браузер для перегляду I2P-сайтів? (Ви також можете зробити це пізніше через меню).</string>
|
<string name="configure_browser_for_i2p">Бажаєте налаштувати браузер для перегляду I2P-сайтів? (Ви також можете зробити це пізніше через меню).</string>
|
||||||
|
<string name="configure_no_doze_title">Керувати оптимізації батареї?</string>
|
||||||
<string name="first_start_title">Вітаємо! I2P встановлено.</string>
|
<string name="first_start_title">Вітаємо! I2P встановлено.</string>
|
||||||
<string name="first_start_welcome"><b>Ласкаво просимо до I2P!</b> Будь ласка, <b>зачекайте,</b> так як I2P запускається і шукає піри.</string>
|
<string name="first_start_welcome"><b>Ласкаво просимо до I2P!</b> Будь ласка, <b>зачекайте,</b> так як I2P запускається і шукає піри.</string>
|
||||||
<string name="first_start_read">Поки чекаєте, прочитайте, будь ласка, нотатки до релізу і вітальну сторінку.</string>
|
<string name="first_start_read">Поки чекаєте, прочитайте, будь ласка, нотатки до релізу і вітальну сторінку.</string>
|
||||||
|
@ -109,9 +109,11 @@
|
|||||||
</string-array>
|
</string-array>
|
||||||
<string-array name="recommended_browsers">
|
<string-array name="recommended_browsers">
|
||||||
<item>acr.browser.lightning</item>
|
<item>acr.browser.lightning</item>
|
||||||
|
<item>io.github.forkmaintainers.iceraven</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
<string-array name="recommended_browser_labels">
|
<string-array name="recommended_browser_labels">
|
||||||
<item>Lightning</item>
|
<item>Lightning</item>
|
||||||
|
<item>IceRaven(With Extension)</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
<string-array name="supported_browsers">
|
<string-array name="supported_browsers">
|
||||||
<item>org.mozilla.firefox</item>
|
<item>org.mozilla.firefox</item>
|
||||||
|
@ -150,6 +150,9 @@
|
|||||||
<string name="notification_status_expl">Exploratory tunnels: %1$d/%2$d</string>
|
<string name="notification_status_expl">Exploratory tunnels: %1$d/%2$d</string>
|
||||||
<string name="notification_status_client">Client tunnels: %1$d/%2$d</string>
|
<string name="notification_status_client">Client tunnels: %1$d/%2$d</string>
|
||||||
|
|
||||||
|
<string name="copied_base32_system_notification_title">Base32 copied to clipboard</string>
|
||||||
|
<string name="copied_base32_system_notification_body">The address of your I2P tunnel has been copied to the clipboard.</string>
|
||||||
|
|
||||||
<string name="menu_settings">Settings</string>
|
<string name="menu_settings">Settings</string>
|
||||||
<string name="settings_enable">Enable</string>
|
<string name="settings_enable">Enable</string>
|
||||||
<string name="settings_desc_subscriptions">Subscription URLs</string>
|
<string name="settings_desc_subscriptions">Subscription URLs</string>
|
||||||
@ -182,7 +185,9 @@
|
|||||||
<string name="settings_label_transports">Transports</string>
|
<string name="settings_label_transports">Transports</string>
|
||||||
<string name="settings_label_maxConns">Max connections</string>
|
<string name="settings_label_maxConns">Max connections</string>
|
||||||
<string name="settings_label_i2cp">I2CP interface</string>
|
<string name="settings_label_i2cp">I2CP interface</string>
|
||||||
<string name="settings_desc_i2cp">Allow third-party apps to create tunnels (requires router restart)</string>
|
<string name="settings_desc_i2cp">Allow third-party apps to create tunnels using I2CP (requires router restart)</string>
|
||||||
|
<string name="settings_label_sam">SAM interface</string>
|
||||||
|
<string name="settings_desc_sam">Allow third-party apps to create tunnels using SAM (requires router restart)</string>
|
||||||
<string name="settings_label_exploratory_pool">Exploratory pool</string>
|
<string name="settings_label_exploratory_pool">Exploratory pool</string>
|
||||||
<string name="settings_desc_exploratory_pool">Tunnel parameters</string>
|
<string name="settings_desc_exploratory_pool">Tunnel parameters</string>
|
||||||
<string name="settings_label_expl_inbound">Inbound tunnels</string>
|
<string name="settings_label_expl_inbound">Inbound tunnels</string>
|
||||||
@ -415,4 +420,5 @@
|
|||||||
<string name="no_market_app">No market app found, please install manually</string>
|
<string name="no_market_app">No market app found, please install manually</string>
|
||||||
|
|
||||||
<string name="unset">Unset</string>
|
<string name="unset">Unset</string>
|
||||||
|
<string name="running_background">I2P is running in the background</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -23,6 +23,13 @@
|
|||||||
android:summary="@string/settings_desc_i2cp"
|
android:summary="@string/settings_desc_i2cp"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:key="i2pandroid.client.sam"
|
||||||
|
android:defaultValue="true"
|
||||||
|
android:title="@string/settings_label_sam"
|
||||||
|
android:summary="@string/settings_desc_sam"
|
||||||
|
/>
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="preference_category_expl_tunnels"
|
android:key="preference_category_expl_tunnels"
|
||||||
android:summary="@string/settings_desc_exploratory_pool"
|
android:summary="@string/settings_desc_exploratory_pool"
|
||||||
|
@ -408,14 +408,14 @@
|
|||||||
<target name="copy-i2p-resources" depends="-dirs" >
|
<target name="copy-i2p-resources" depends="-dirs" >
|
||||||
<copy file="LICENSE.txt" tofile="res/raw/license_app_txt" />
|
<copy file="LICENSE.txt" tofile="res/raw/license_app_txt" />
|
||||||
<copy file="licenses/LICENSE-Apache2.0.txt" tofile="res/raw/license_apache20_txt" />
|
<copy file="licenses/LICENSE-Apache2.0.txt" tofile="res/raw/license_apache20_txt" />
|
||||||
<copy file="${i2pbase}/installer/resources/themes/console/images/i2plogo.png" todir="res/drawable/" />
|
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/i2plogo.png" todir="res/drawable/" />
|
||||||
|
|
||||||
<!-- Static web sources should be in the assets directory. -->
|
<!-- Static web sources should be in the assets directory. -->
|
||||||
<copy file="${i2pbase}/installer/resources/themes/console/images/i2plogo.png" todir="assets/themes/console/images/" />
|
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/i2plogo.png" todir="assets/themes/console/images/" />
|
||||||
<copy file="${i2pbase}/installer/resources/themes/console/images/outbound.png" todir="assets/themes/console/images/" />
|
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/outbound.png" todir="assets/themes/console/images/" />
|
||||||
<copy file="${i2pbase}/installer/resources/themes/console/images/inbound.png" todir="assets/themes/console/images/" />
|
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/inbound.png" todir="assets/themes/console/images/" />
|
||||||
<copy file="${i2pbase}/installer/resources/themes/console/light/images/header.png" todir="assets/themes/console/light/images/" />
|
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/light/images/header.png" todir="assets/themes/console/light/images/" />
|
||||||
<copy file="${i2pbase}/installer/resources/themes/console/light/console.css" todir="assets/themes/console/light/" />
|
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/light/console.css" todir="assets/themes/console/light/" />
|
||||||
|
|
||||||
<copy file="${i2pbase}/installer/resources/blocklist.txt" tofile="res/raw/blocklist_txt" />
|
<copy file="${i2pbase}/installer/resources/blocklist.txt" tofile="res/raw/blocklist_txt" />
|
||||||
<copy file="${i2pbase}/installer/resources/hosts.txt" tofile="res/raw/hosts_txt" />
|
<copy file="${i2pbase}/installer/resources/hosts.txt" tofile="res/raw/hosts_txt" />
|
||||||
|
190
etc/debian-jessie-repo.key.asc
Normal file
190
etc/debian-jessie-repo.key.asc
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
B+5MJs5pWN4l1jv6T1pmIH2hqN5exmr/SvcYLiaMV9bus6C0QYk5THa2gQeQQBor
|
||||||
|
b6FoeXtWFyT9EF/R4/MY0DvflZAVsBO8d+5L6X7boVobef6TMPkNFzvQrtIz/KHX
|
||||||
|
vVlGf80KiL+jH/ZOwljXH/gsldbwZxM/mTFK7mscsdWp9+/1iQI3BB8BCAAhBQJU
|
||||||
|
c6aAFwyAATCZEb6pZtBhMFMEVxG05f8VsP2CAgcAAAoJEHY40EQrkNAQQt0P/1jW
|
||||||
|
fbtfR0A7WUChOPHWCNZ+rm8PdBpY4FnRS4hbrBHJdVJnMAIZJ2Ys+5Uj9/xzMLYm
|
||||||
|
rK8ObktUBBegrLTzkrS8B1OsvFJE7jSzoIxRZtYVMcsN2ADKj0dz1a9AMaKf8xtn
|
||||||
|
JBTxD6af8leb50FnR8iUV0ZPVD5zG3J49T2DmhkhFwgaU4fVY2Padtmp65CNdH2Y
|
||||||
|
UgPE9nCKU8tMVeVftFWfVBJRkmvwFkPaWy822IqTFkLWpNoSL+DCxDN0WKPbBfD+
|
||||||
|
7vEaKHfAA18MCF5d064FupUn7m61b969Ntie0UwoUjzooW7OIgNH0mpwrVNwQMa0
|
||||||
|
DPdr8zPQRX9mIgg5ZEz6SSi5KKZGK0PkOnx50fiAUwhaQ/WoSsZesmMauOokxzZM
|
||||||
|
Bkzp4QiSWOy3ctcEuAVSjg3Zb1kRkiRSyRZvzL57EET4W5t5d35GuPyF07D5cOsD
|
||||||
|
5EU368ACfIrJtUPRDHjOpV0E29kav65eHmYcGJW59wCnaCOFUVwFoRcLPkcYQCE3
|
||||||
|
XoWoGFOI9yCkYS1LEzyDKLrtrBJZ5rUGTQXA2A9RfXxwrJgnjq+jmRuce5C2eYvH
|
||||||
|
RNMrj9AsHGC23nj45pxLCHiRJO0hWcsnkFgWoEx5I6mcn1sI0FBpI2qc9CJ9/+GK
|
||||||
|
DUbjYoaZYUbT+OFIRqGWLtPE5BakbTL/8QO8JD4UtEZEZWJpYW4gQXJjaGl2ZSBB
|
||||||
|
dXRvbWF0aWMgU2lnbmluZyBLZXkgKDgvamVzc2llKSA8ZnRwbWFzdGVyQGRlYmlh
|
||||||
|
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
|
||||||
|
=qjte
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
1
etc/docker.local.ndk.properties
Normal file
1
etc/docker.local.ndk.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
ndk.dir=/opt/android-sdk-linux/ndk/
|
1
etc/docker.local.router.properties
Normal file
1
etc/docker.local.router.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
i2psrc=/opt/workspace/i2p.i2p
|
1
etc/docker.local.sdk.properties
Normal file
1
etc/docker.local.sdk.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
sdk.dir=/opt/android-sdk-linux/
|
10
etc/docker.override.properties
Normal file
10
etc/docker.override.properties
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#javac.version=1.7
|
||||||
|
javac.source=1.8
|
||||||
|
javac.version=1.7
|
||||||
|
javac.target=1.7
|
||||||
|
javac.release=8
|
||||||
|
javac.compilerargs=-bootclasspath /opt/packages/openjdk-7-jre/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar:/opt/packages/openjdk-7-jre/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar
|
||||||
|
build.built-by=idk
|
||||||
|
junit.home=/usr/share/java
|
||||||
|
hamcrest.home=/usr/share/java
|
||||||
|
mockito.home=/usr/share/java
|
4
etc/docker.signing.example.properties
Normal file
4
etc/docker.signing.example.properties
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
STORE_FILE=/.i2p-plugin-keys/android.keystore
|
||||||
|
STORE_PASSWORD=store.password
|
||||||
|
KEY_ALIAS=key.alias
|
||||||
|
KEY_PASSWORD=key.password
|
@ -10,11 +10,11 @@ POM_SCM_DEV_CONNECTION=scm:git:git@github.com:i2p/i2p.android.base.git
|
|||||||
POM_LICENCE_NAME=The Apache Software License, Version 2.0
|
POM_LICENCE_NAME=The Apache Software License, Version 2.0
|
||||||
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
|
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
|
||||||
POM_LICENCE_DIST=repo
|
POM_LICENCE_DIST=repo
|
||||||
POM_DEVELOPER_ID=meeh
|
POM_DEVELOPER_ID=idk
|
||||||
POM_DEVELOPER_NAME=meeh
|
POM_DEVELOPER_NAME=idk
|
||||||
POM_DEVELOPER_EMAIL=meeh@i2pmail.org
|
POM_DEVELOPER_EMAIL=hankhill19580@gmail.com
|
||||||
|
|
||||||
I2P_VERSION=0.9.45
|
ANDROID_BUILD_TARGET_SDK_VERSION=29
|
||||||
ANDROID_BUILD_TARGET_SDK_VERSION=28
|
|
||||||
ANDROID_BUILD_SDK_VERSION=28
|
ANDROID_BUILD_SDK_VERSION=28
|
||||||
|
|
||||||
|
I2P_VERSION=0.9.50
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<string name="yes">Oui</string>
|
<string name="yes">Oui</string>
|
||||||
<string name="no">Non</string>
|
<string name="no">Non</string>
|
||||||
<string name="install_i2p_android">Installer I2P pour Android ?</string>
|
<string name="install_i2p_android">Installer I2P pour Android ?</string>
|
||||||
<string name="you_must_have_i2p_android">I2P pour Android doit être installé et en fonction. Souhaitez-vous l’installer ?</string>
|
<string name="you_must_have_i2p_android">I2P pour Android doit être installé et en fonction. Voulez-vous l’installer ?</string>
|
||||||
<string name="start_i2p_android">Démarrer I2P pour Android ?</string>
|
<string name="start_i2p_android">Démarrer I2P pour Android ?</string>
|
||||||
<string name="would_you_like_to_start_i2p_android">Il semblerait qu’I2P pour Android ne soit pas en fonction. Souhaitez-vous le démarrer ?</string>
|
<string name="would_you_like_to_start_i2p_android">Il semblerait qu’I2P pour Android ne soit pas en fonction. Voulez-vous le démarrer ?</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
9
lib/helper/src/main/res/values-tk/strings.xml
Normal file
9
lib/helper/src/main/res/values-tk/strings.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<resources>
|
||||||
|
<string name="yes">Evet</string>
|
||||||
|
<string name="no">Hayır</string>
|
||||||
|
<string name="install_i2p_android">I2P Android guruň?</string>
|
||||||
|
<string name="you_must_have_i2p_android">I2P Android gurnalan we işleýän bolmaly. Gurmak isleýärsiňizmi?</string>
|
||||||
|
<string name="start_i2p_android">I2P Android başlaň?</string>
|
||||||
|
<string name="would_you_like_to_start_i2p_android">I2P Android işlemeýän ýaly. Başlamak isleýärsiňizmi?</string>
|
||||||
|
</resources>
|
@ -13,6 +13,7 @@ artifacts {
|
|||||||
routerjars file: file('libs/i2ptunnel.jar'), builtBy: buildRouter
|
routerjars file: file('libs/i2ptunnel.jar'), builtBy: buildRouter
|
||||||
routerjars file: file('libs/i2ptunnel-ui.jar'), builtBy: buildRouter
|
routerjars file: file('libs/i2ptunnel-ui.jar'), builtBy: buildRouter
|
||||||
routerjars file: file('libs/addressbook.jar'), builtBy: buildRouter
|
routerjars file: file('libs/addressbook.jar'), builtBy: buildRouter
|
||||||
|
routerjars file: file('libs/sam.jar'), builtBy: buildRouter
|
||||||
//routerjars file: file('libs/BOB.jar'), builtBy: buildRouter
|
//routerjars file: file('libs/BOB.jar'), builtBy: buildRouter
|
||||||
}
|
}
|
||||||
clean.dependsOn cleanBuildRouter
|
clean.dependsOn cleanBuildRouter
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
<available property="have.bob" file="${i2plib}/BOB.jar" />
|
<available property="have.bob" file="${i2plib}/BOB.jar" />
|
||||||
<available property="have.newsxml" file="${i2pbase}/apps/routerconsole/java/build/newsxml.jar" />
|
<available property="have.newsxml" file="${i2pbase}/apps/routerconsole/java/build/newsxml.jar" />
|
||||||
<available property="have.i2ptunnel" file="${i2plib}/i2ptunnel-ui.jar" />
|
<available property="have.i2ptunnel" file="${i2plib}/i2ptunnel-ui.jar" />
|
||||||
|
<available property="have.sam" file="${i2plib}/sam.jar" />
|
||||||
<available property="have.addressbook" file="${i2plib}/addressbook.jar" />
|
<available property="have.addressbook" file="${i2plib}/addressbook.jar" />
|
||||||
|
|
||||||
<target name="buildNewsXMLJar" unless="have.newsxml">
|
<target name="buildNewsXMLJar" unless="have.newsxml">
|
||||||
@ -36,7 +37,11 @@
|
|||||||
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildBOB" />
|
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildBOB" />
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="buildrouter" depends="buildNewsXMLJar, buildI2PTunnelJar, buildAddressbook">
|
<target name="buildSAM" unless="have.sam">
|
||||||
|
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildSAM" />
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<target name="buildrouter" depends="buildNewsXMLJar, buildI2PTunnelJar, buildAddressbook, buildSAM">
|
||||||
<mkdir dir="${jar.libs.dir}" />
|
<mkdir dir="${jar.libs.dir}" />
|
||||||
|
|
||||||
<!-- newsxml -->
|
<!-- newsxml -->
|
||||||
@ -50,10 +55,15 @@
|
|||||||
<copy file="${i2plib}/addressbook.jar" todir="${jar.libs.dir}" />
|
<copy file="${i2plib}/addressbook.jar" todir="${jar.libs.dir}" />
|
||||||
|
|
||||||
<!-- bob -->
|
<!-- bob -->
|
||||||
<!--
|
|
||||||
|
<!--
|
||||||
<copy file="${i2plib}/BOB.jar" todir="${jar.libs.dir}" />
|
<copy file="${i2plib}/BOB.jar" todir="${jar.libs.dir}" />
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<!-- sam -->
|
||||||
|
<copy file="${i2plib}/sam.jar" todir="${jar.libs.dir}" />
|
||||||
|
|
||||||
|
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="clean">
|
<target name="clean">
|
||||||
|
Reference in New Issue
Block a user