mirror of
https://github.com/PurpleI2P/i2pd-android.git
synced 2025-03-13 05:51:12 +00:00
Compare commits
24 Commits
Author | SHA1 | Date | |
---|---|---|---|
8c533cbbfc | |||
8236649d2e | |||
d6347329e1 | |||
99ee7d7f57 | |||
3711a70495 | |||
66809c5ae4 | |||
06f337f717 | |||
![]() |
cb322c6467 | ||
![]() |
cae2700b20 | ||
9203ba68a7 | |||
440b565c4b | |||
ed54b2692b | |||
503f8a003e | |||
![]() |
8347c04fb1 | ||
c912f81429 | |||
27cdad53ba | |||
734693ba94 | |||
031c536945 | |||
![]() |
988940f50a | ||
8dba5a00e5 | |||
c74235a279 | |||
ca3ef80981 | |||
8f56a56927 | |||
![]() |
cf5fe2e948 |
27
.github/workflows/android.yml
vendored
27
.github/workflows/android.yml
vendored
@ -6,7 +6,7 @@ jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: 'recursive'
|
||||
- name: Install GNU C++ compiler
|
||||
@ -20,15 +20,13 @@ jobs:
|
||||
- name: Build required modules
|
||||
run: |
|
||||
export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/23.2.8568313
|
||||
pushd app/jni
|
||||
./build_boost.sh
|
||||
./build_openssl.sh
|
||||
./build_miniupnpc.sh
|
||||
pushd binary/jni
|
||||
./build.sh
|
||||
popd
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew --no-daemon assembleDebug
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: android-apks
|
||||
path: app/build/outputs/apk/debug/*.apk
|
||||
@ -36,7 +34,7 @@ jobs:
|
||||
build-binary:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: 'recursive'
|
||||
- name: Install GNU C++ compiler
|
||||
@ -47,18 +45,11 @@ jobs:
|
||||
run: export JAVA_HOME=$JAVA_HOME_11_X64
|
||||
- name: Install required Android SDK packages
|
||||
run: $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "cmake;3.22.1" "ndk;23.2.8568313"
|
||||
- name: Build required modules
|
||||
- name: Build binary with NDK
|
||||
run: |
|
||||
export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/23.2.8568313
|
||||
pushd binary/jni
|
||||
./build_boost.sh
|
||||
./build_openssl.sh
|
||||
./build_miniupnpc.sh
|
||||
popd
|
||||
- name: Build binaries with NDK
|
||||
run: |
|
||||
pushd binary/jni
|
||||
$ANDROID_NDK_HOME/ndk-build -j2 NDK_MODULE_PATH=$PWD
|
||||
./build.sh -b
|
||||
popd
|
||||
- name: Create package with built binaries
|
||||
run: |
|
||||
@ -66,12 +57,12 @@ jobs:
|
||||
./build-archive
|
||||
popd
|
||||
- name: Upload binaries archive
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: android-binaries
|
||||
path: binary/libs/*
|
||||
- name: Upload binaries package
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: android-binaries-pack
|
||||
path: contrib/binary_pack/i2pd_*_android_binary.zip
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -10,7 +10,6 @@ obj
|
||||
.externalNativeBuild
|
||||
ant.properties
|
||||
local.properties
|
||||
build.sh
|
||||
android.iml
|
||||
build
|
||||
*.iml
|
||||
|
10
.gitmodules
vendored
10
.gitmodules
vendored
@ -1,16 +1,16 @@
|
||||
[submodule "android-ifaddrs"]
|
||||
path = app/jni/android-ifaddrs
|
||||
path = binary/jni/android-ifaddrs
|
||||
url = https://github.com/PurpleI2P/android-ifaddrs.git
|
||||
[submodule "i2pd"]
|
||||
path = app/jni/i2pd
|
||||
path = binary/jni/i2pd
|
||||
url = https://github.com/PurpleI2P/i2pd.git
|
||||
branch = openssl
|
||||
[submodule "miniupnp"]
|
||||
path = app/jni/miniupnp
|
||||
path = binary/jni/miniupnp
|
||||
url = https://github.com/miniupnp/miniupnp.git
|
||||
[submodule "openssl"]
|
||||
path = app/jni/openssl
|
||||
path = binary/jni/openssl
|
||||
url = https://github.com/openssl/openssl.git
|
||||
[submodule "boost"]
|
||||
path = app/jni/boost
|
||||
path = binary/jni/boost
|
||||
url = https://github.com/moritz-wundke/Boost-for-Android.git
|
||||
|
@ -42,6 +42,7 @@ unzip commandlinetools-linux-8092744_latest.zip
|
||||
|
||||
```bash
|
||||
git clone --recurse-submodules https://github.com/PurpleI2P/i2pd-android.git
|
||||
cd i2pd-android
|
||||
```
|
||||
|
||||
### Compile application
|
||||
@ -53,10 +54,8 @@ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
|
||||
export ANDROID_HOME=/opt/android-sdk
|
||||
export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/23.2.8568313
|
||||
|
||||
pushd app/jni
|
||||
./build_boost.sh
|
||||
./build_openssl.sh
|
||||
./build_miniupnpc.sh
|
||||
pushd binary/jni
|
||||
./build.sh -d
|
||||
popd
|
||||
|
||||
gradle clean assembleDebug
|
||||
|
@ -5,17 +5,32 @@ plugins {
|
||||
dependencies {
|
||||
implementation 'androidx.core:core:1.9.0'
|
||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
||||
// implementation 'org.ini4j:ini4j:0.5.4'
|
||||
implementation 'org.apache.commons:commons-configuration2:2.9.0'
|
||||
}
|
||||
configurations {
|
||||
all{
|
||||
//exclude group: 'commons-logging', module: 'commons-logging'
|
||||
//exclude group: 'org.apache.httpcomponents'
|
||||
exclude module: 'httpclient'
|
||||
}
|
||||
}
|
||||
|
||||
android {
|
||||
lintOptions {
|
||||
// Not so a good way
|
||||
disable 'DuplicatePlatformClasses'
|
||||
}
|
||||
|
||||
compileSdkVersion 33
|
||||
|
||||
defaultConfig {
|
||||
applicationId "org.purplei2p.i2pd"
|
||||
targetSdkVersion 33
|
||||
// TODO: 24?
|
||||
minSdkVersion 16
|
||||
versionCode 2500200
|
||||
versionName "2.50.2"
|
||||
versionCode 2560000
|
||||
versionName "2.56.0"
|
||||
archivesBaseName += "-$versionName"
|
||||
ndkVersion "23.2.8568313"
|
||||
|
||||
@ -28,7 +43,7 @@ android {
|
||||
|
||||
externalNativeBuild {
|
||||
ndkBuild {
|
||||
arguments "NDK_MODULE_PATH:=${rootProject.projectDir}/app/jni"
|
||||
arguments "NDK_MODULE_PATH:=${rootProject.projectDir}/binary/jni"
|
||||
arguments "-j${Runtime.getRuntime().availableProcessors()}"
|
||||
}
|
||||
}
|
||||
|
@ -4,9 +4,6 @@ LOCAL_MODULE := i2pd
|
||||
LOCAL_CPP_FEATURES := rtti exceptions
|
||||
LOCAL_C_INCLUDES += $(IFADDRS_PATH) $(LIB_SRC_PATH) $(LIB_CLIENT_SRC_PATH) $(LANG_SRC_PATH) $(DAEMON_SRC_PATH)
|
||||
LOCAL_STATIC_LIBRARIES := \
|
||||
boost_system \
|
||||
boost_date_time \
|
||||
boost_filesystem \
|
||||
boost_program_options \
|
||||
crypto \
|
||||
ssl \
|
||||
@ -29,27 +26,6 @@ LOCAL_SRC_FILES := \
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := boost_system
|
||||
LOCAL_SRC_FILES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/lib/libboost_system.a
|
||||
LOCAL_EXPORT_C_INCLUDES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/include
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := boost_date_time
|
||||
LOCAL_SRC_FILES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/lib/libboost_date_time.a
|
||||
LOCAL_EXPORT_C_INCLUDES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/include
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := boost_filesystem
|
||||
LOCAL_SRC_FILES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/lib/libboost_filesystem.a
|
||||
LOCAL_EXPORT_C_INCLUDES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/include
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := boost_program_options
|
||||
|
@ -1 +0,0 @@
|
||||
Subproject commit f302cc7ead971d4068661d34c2f3ba06063d8ea2
|
@ -1 +0,0 @@
|
||||
Subproject commit 53e6c16ea80c7dcb2683fd548e0c7a09ddffbfc1
|
@ -1,80 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
BOOST_VERSION=1.78.0
|
||||
BOOST_LIBS=date_time,filesystem,program_options,system
|
||||
|
||||
function build_one {
|
||||
echo "Configuring and building..."
|
||||
CXXFLAGS="-std=c++14" \
|
||||
NCPU=$(nproc) \
|
||||
./build-android.sh \
|
||||
--boost=$BOOST_VERSION \
|
||||
--arch=$CPU \
|
||||
--target-version=$API \
|
||||
--with-libraries=$BOOST_LIBS \
|
||||
--layout=system \
|
||||
$ANDROID_NDK_HOME
|
||||
}
|
||||
|
||||
function checkPreRequisites {
|
||||
|
||||
if ! [ -d "boost" ] || ! [ "$(ls -A boost)" ]; then
|
||||
echo -e "\033[31mFailed! Submodule 'boost' not found!\033[0m"
|
||||
echo -e "\033[31mTry to run: 'git submodule update --init'\033[0m"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z "$ANDROID_NDK_HOME" -a "$ANDROID_NDK_HOME" == "" ]; then
|
||||
echo -e "\033[31mFailed! ANDROID_NDK_HOME is empty. Run 'export ANDROID_NDK_HOME=[PATH_TO_NDK]'\033[0m"
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
function build {
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
x86_64)
|
||||
API=21
|
||||
TARGET=x86_64
|
||||
build_one
|
||||
;;
|
||||
arm64)
|
||||
API=21
|
||||
CPU=arm64-v8a
|
||||
build_one
|
||||
;;
|
||||
x86)
|
||||
API=16
|
||||
CPU=x86
|
||||
build_one
|
||||
;;
|
||||
arm)
|
||||
API=16
|
||||
CPU=armeabi-v7a
|
||||
build_one
|
||||
;;
|
||||
all)
|
||||
API=16
|
||||
build_one
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
checkPreRequisites
|
||||
|
||||
cd boost
|
||||
|
||||
# disable verbose output
|
||||
sed -i -E -e 's/d\+2/d\+0/' build-android.sh
|
||||
sed -i -E -e 's/\"23\.1\"\|\"25\.0\"/\"23\.1\"\|\"23\.2\"\|\"25\.0\"/' build-android.sh
|
||||
|
||||
if (( $# == 0 )); then
|
||||
build all
|
||||
else
|
||||
build $@
|
||||
fi
|
@ -1,92 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
CMAKE_VERSION=3.22.1
|
||||
|
||||
function build_one {
|
||||
mkdir -p build out/$CPU
|
||||
cd build
|
||||
|
||||
cmake \
|
||||
-G "Unix Makefiles" \
|
||||
-DUPNPC_BUILD_SHARED=False \
|
||||
-DUPNPC_BUILD_TESTS=False \
|
||||
-DUPNPC_BUILD_SAMPLE=False \
|
||||
-DANDROID_NATIVE_API_LEVEL=$API \
|
||||
-DANDROID_ABI=$CPU \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DANDROID_NDK=$ANDROID_NDK_HOME \
|
||||
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
|
||||
-DCMAKE_INSTALL_PREFIX=../out/$CPU \
|
||||
..
|
||||
|
||||
echo "Building..."
|
||||
cmake --build . -- libminiupnpc-static
|
||||
make install
|
||||
|
||||
cd ..
|
||||
rm -rf build
|
||||
}
|
||||
|
||||
function checkPreRequisites {
|
||||
|
||||
if ! [ -d "miniupnp" ] || ! [ "$(ls -A miniupnp)" ]; then
|
||||
echo -e "\033[31mFailed! Submodule 'miniupnp' not found!\033[0m"
|
||||
echo -e "\033[31mTry to run: 'git submodule update --init'\033[0m"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z "$ANDROID_HOME" -a "$ANDROID_HOME" == "" ]; then
|
||||
echo -e "\033[31mFailed! ANDROID_HOME is empty. Run 'export ANDROID_HOME=[PATH_TO_NDK]'\033[0m"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z "$ANDROID_NDK_HOME" -a "$ANDROID_NDK_HOME" == "" ]; then
|
||||
echo -e "\033[31mFailed! ANDROID_NDK_HOME is empty. Run 'export ANDROID_NDK_HOME=[PATH_TO_NDK]'\033[0m"
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
function build {
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
x86_64)
|
||||
API=21
|
||||
CPU=x86_64
|
||||
build_one
|
||||
;;
|
||||
arm64)
|
||||
API=21
|
||||
CPU=arm64-v8a
|
||||
build_one
|
||||
;;
|
||||
arm)
|
||||
API=16
|
||||
CPU=armeabi-v7a
|
||||
build_one
|
||||
;;
|
||||
x86)
|
||||
API=16
|
||||
CPU=x86
|
||||
build_one
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
checkPreRequisites
|
||||
|
||||
cd miniupnp/miniupnpc
|
||||
rm -rf build out
|
||||
|
||||
# add cmake from Android SDK to PATH
|
||||
PATH=$ANDROID_HOME/cmake/$CMAKE_VERSION/bin:$PATH
|
||||
|
||||
if (( $# == 0 )); then
|
||||
build x86_64 arm64 arm x86
|
||||
else
|
||||
build $@
|
||||
fi
|
@ -1,93 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
HOST_OS=`uname -a`
|
||||
|
||||
function build_one {
|
||||
mkdir -p out/$CPU
|
||||
|
||||
echo "Configuring OpenSSL for $CPU..."
|
||||
./Configure \
|
||||
--prefix="$PWD/out/$CPU" \
|
||||
$TARGET \
|
||||
no-shared \
|
||||
no-tests \
|
||||
-D__ANDROID_API__=$API \
|
||||
-Wno-macro-redefined
|
||||
|
||||
echo "Building OpenSSL for $CPU..."
|
||||
make -j $(nproc) > out/build.log
|
||||
|
||||
make install_sw >> out/build.log
|
||||
|
||||
make clean
|
||||
}
|
||||
|
||||
function checkPreRequisites {
|
||||
|
||||
if ! [ -d "openssl" ] || ! [ "$(ls -A openssl)" ]; then
|
||||
echo -e "\033[31mFailed! Submodule 'openssl' not found!\033[0m"
|
||||
echo -e "\033[31mTry to run: 'git submodule update --init'\033[0m"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z "$ANDROID_NDK_HOME" -a "$ANDROID_NDK_HOME" == "" ]; then
|
||||
echo -e "\033[31mFailed! ANDROID_NDK_HOME is empty. Run 'export ANDROID_NDK_HOME=[PATH_TO_NDK]'\033[0m"
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
function build {
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
x86_64)
|
||||
API=21
|
||||
CPU=x86_64
|
||||
TARGET=android-x86_64
|
||||
build_one
|
||||
;;
|
||||
arm64)
|
||||
API=21
|
||||
CPU=arm64-v8a
|
||||
TARGET=android-arm64
|
||||
build_one
|
||||
;;
|
||||
arm)
|
||||
API=16
|
||||
CPU=armeabi-v7a
|
||||
TARGET=android-arm
|
||||
build_one
|
||||
;;
|
||||
x86)
|
||||
API=16
|
||||
CPU=x86
|
||||
TARGET=android-x86
|
||||
build_one
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
checkPreRequisites
|
||||
|
||||
cd openssl
|
||||
rm -rf out
|
||||
|
||||
if [[ "$HOST_OS" == *"_NT-"* ]]; then
|
||||
PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/windows-x86_64/bin:$PATH
|
||||
else
|
||||
PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
|
||||
fi
|
||||
|
||||
if [[ -f 'Makefile' ]]; then
|
||||
make clean
|
||||
fi
|
||||
|
||||
if (( $# == 0 )); then
|
||||
build x86_64 arm64 arm x86
|
||||
else
|
||||
build $@
|
||||
fi
|
@ -1 +0,0 @@
|
||||
Subproject commit 3b97feb89fdc310ab43cc9336e1817f5b17f4b82
|
@ -1 +0,0 @@
|
||||
Subproject commit 6576eb611b670c4841cc65095914275d6be008b2
|
@ -1 +0,0 @@
|
||||
Subproject commit e04bd3433fd84e1861bf258ea37928d9845e6a86
|
@ -23,6 +23,17 @@
|
||||
android:theme="@android:style/Theme.DeviceDefault"
|
||||
android:usesCleartextTraffic="true">
|
||||
|
||||
<service
|
||||
android:name=".I2PdQSTileService"
|
||||
android:exported="true"
|
||||
android:label="I2Pd"
|
||||
android:icon="@drawable/ic_logo"
|
||||
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
|
||||
<intent-filter>
|
||||
<action android:name="android.service.quicksettings.action.QS_TILE" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<receiver
|
||||
android:enabled="true"
|
||||
android:name="org.purplei2p.i2pd.receivers.BootUpReceiver"
|
||||
@ -64,6 +75,8 @@
|
||||
|
||||
<service
|
||||
android:name=".ForegroundService"
|
||||
android:exported="false"
|
||||
android:stopWithTask="false"
|
||||
android:enabled="true" />
|
||||
|
||||
<activity
|
||||
@ -74,5 +87,11 @@
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="org.purplei2p.i2pd.I2PDPermsAskerActivity" />
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".MainPreferenceActivity"
|
||||
android:label="Settings"
|
||||
>
|
||||
</activity>
|
||||
|
||||
</application>
|
||||
</manifest>
|
||||
|
1
app/src/main/assets/certificates
Symbolic link
1
app/src/main/assets/certificates
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../binary/jni/i2pd/contrib/certificates
|
@ -1,13 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIB6jCCAY+gAwIBAgIJAPeWi4iUKLBJMAoGCCqGSM49BAMCMHoxCzAJBgNVBAYT
|
||||
AlhYMQswCQYDVQQIDAJYWDELMAkGA1UEBwwCWFgxHjAcBgNVBAoMFUkyUCBBbm9u
|
||||
eW1vdXMgTmV0d29yazEPMA0GA1UECwwGZmFtaWx5MSAwHgYDVQQDDBdnb3N0Y29p
|
||||
bi5mYW1pbHkuaTJwLm5ldDAeFw0xNzA4MDExMzQ4MzdaFw0yNzA3MzAxMzQ4Mzda
|
||||
MHoxCzAJBgNVBAYTAlhYMQswCQYDVQQIDAJYWDELMAkGA1UEBwwCWFgxHjAcBgNV
|
||||
BAoMFUkyUCBBbm9ueW1vdXMgTmV0d29yazEPMA0GA1UECwwGZmFtaWx5MSAwHgYD
|
||||
VQQDDBdnb3N0Y29pbi5mYW1pbHkuaTJwLm5ldDBZMBMGByqGSM49AgEGCCqGSM49
|
||||
AwEHA0IABC+9iIYumUNnsqKbnTluHimV8OdGvo7yeGxuqhfNNB2b3jvbFJ81scgH
|
||||
dsZtMQmUxgKM5nH+NQJMoCxHhSlRy2QwCgYIKoZIzj0EAwIDSQAwRgIhANNh7mOp
|
||||
nBBPRh2a/ipG1VYS0d+mNjSrpz8xWcG3CXPLAiEAjM5MTfv9sOJ74PeZVhFZ02w4
|
||||
vhgyZCeLJ57f123Lm1A=
|
||||
-----END CERTIFICATE-----
|
@ -1,13 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICCjCCAa2gAwIBAgIEfT9YJTAMBggqhkjOPQQDAgUAMHkxCzAJBgNVBAYTAlhY
|
||||
MQswCQYDVQQIEwJYWDELMAkGA1UEBxMCWFgxHjAcBgNVBAoTFUkyUCBBbm9ueW1v
|
||||
dXMgTmV0d29yazEPMA0GA1UECxMGZmFtaWx5MR8wHQYDVQQDExZpMnAtZGV2LmZh
|
||||
bWlseS5pMnAubmV0MB4XDTE1MTIwOTIxNDIzM1oXDTI1MTIwODIxNDIzM1oweTEL
|
||||
MAkGA1UEBhMCWFgxCzAJBgNVBAgTAlhYMQswCQYDVQQHEwJYWDEeMBwGA1UEChMV
|
||||
STJQIEFub255bW91cyBOZXR3b3JrMQ8wDQYDVQQLEwZmYW1pbHkxHzAdBgNVBAMT
|
||||
FmkycC1kZXYuZmFtaWx5LmkycC5uZXQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC
|
||||
AAR7FPSglYrxeSPzv74A1fTwjajZWV0TljqEMBS/56juZQB/7xOwrsHFHA0eEEF9
|
||||
dTH64wx3lhV/9sh/stwPU2MToyEwHzAdBgNVHQ4EFgQUQh4uRP1aaX8TJX5dljrS
|
||||
CeFNjcAwDAYIKoZIzj0EAwIFAANJADBGAiEAhXlEKGCjJ4urpi2db3OIMl9pB+9t
|
||||
M+oVtAqBamWvVBICIQDBaIqfwLzFameO5ULgGRMysKQkL0O5mH6xo910YQV8jQ==
|
||||
-----END CERTIFICATE-----
|
@ -1,13 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIB6TCCAY+gAwIBAgIJAI7G9MXxh7OjMAoGCCqGSM49BAMCMHoxCzAJBgNVBAYT
|
||||
AlhYMQswCQYDVQQIDAJYWDELMAkGA1UEBwwCWFgxHjAcBgNVBAoMFUkyUCBBbm9u
|
||||
eW1vdXMgTmV0d29yazEPMA0GA1UECwwGZmFtaWx5MSAwHgYDVQQDDBdpMnBkLWRl
|
||||
di5mYW1pbHkuaTJwLm5ldDAeFw0xNjAyMjAxNDE2MzhaFw0yNjAyMTcxNDE2Mzha
|
||||
MHoxCzAJBgNVBAYTAlhYMQswCQYDVQQIDAJYWDELMAkGA1UEBwwCWFgxHjAcBgNV
|
||||
BAoMFUkyUCBBbm9ueW1vdXMgTmV0d29yazEPMA0GA1UECwwGZmFtaWx5MSAwHgYD
|
||||
VQQDDBdpMnBkLWRldi5mYW1pbHkuaTJwLm5ldDBZMBMGByqGSM49AgEGCCqGSM49
|
||||
AwEHA0IABMlWL3loKVOfsA8Rm91QR53Il69mQiaB7n3rUhfPkJb9MYc1S4198azE
|
||||
iSnNZSXicKDPIifaCgvONmbACzElHc8wCgYIKoZIzj0EAwIDSAAwRQIgYWmSFuai
|
||||
TJvVrlB5RlbiiNFCEootjWP8BFM3t/yFeaQCIQDkg4xcQIRGTHhjrCsxmlz9KcRF
|
||||
G+eIF+ATfI93nPseLw==
|
||||
-----END CERTIFICATE-----
|
@ -1,12 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIBwTCCAWigAwIBAgIJAOZBC10+/38EMAkGByqGSM49BAEwZzELMAkGA1UEBhMC
|
||||
QVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdp
|
||||
dHMgUHR5IEx0ZDEgMB4GA1UEAwwXbWNhMi1pMnAuZmFtaWx5LmkycC5uZXQwHhcN
|
||||
MTYwMzI4MjIwMjMxWhcNMjYwMzI2MjIwMjMxWjBnMQswCQYDVQQGEwJBVTETMBEG
|
||||
A1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkg
|
||||
THRkMSAwHgYDVQQDDBdtY2EyLWkycC5mYW1pbHkuaTJwLm5ldDBZMBMGByqGSM49
|
||||
AgEGCCqGSM49AwEHA0IABNNyfzJr/rMSUeWliVBbJHRF2+qMypOlHEZ9m1nNATVX
|
||||
64OhuyuVCmbF9R3oDkcZZJQQK1ovXd/EsbAIWDI8K/gwCQYHKoZIzj0EAQNIADBF
|
||||
AiEApmv2tvMwzlvPjHJG1/5aXOSjYWw2s4ETeGt4abWPQkACIBbF3RuCHuzg+KN8
|
||||
N0n9hAJztAqhRCdG3hilxF4fbVLp
|
||||
-----END CERTIFICATE-----
|
@ -1,14 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICKDCCAc6gAwIBAgIUcPHZXtYSqGNRCD6z8gp79WUFtI0wCgYIKoZIzj0EAwIw
|
||||
gZMxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEPMA0GA1UEBwwGQXVzdGlu
|
||||
MRgwFgYDVQQKDA9TdG9ybXlDbG91ZCBJbmMxIzAhBgNVBAMMGnN0b3JteWNsb3Vk
|
||||
LmZhbWlseS5pMnAubmV0MSQwIgYJKoZIhvcNAQkBFhVhZG1pbkBzdG9ybXljbG91
|
||||
ZC5vcmcwHhcNMjIwMzE5MTU1MjU2WhcNMzIwMzE2MTU1MjU2WjCBkzELMAkGA1UE
|
||||
BhMCVVMxDjAMBgNVBAgMBVRleGFzMQ8wDQYDVQQHDAZBdXN0aW4xGDAWBgNVBAoM
|
||||
D1N0b3JteUNsb3VkIEluYzEjMCEGA1UEAwwac3Rvcm15Y2xvdWQuZmFtaWx5Lmky
|
||||
cC5uZXQxJDAiBgkqhkiG9w0BCQEWFWFkbWluQHN0b3JteWNsb3VkLm9yZzBZMBMG
|
||||
ByqGSM49AgEGCCqGSM49AwEHA0IABFUli0hvJEmowNjJVjbKEIWBJhqe973S4VdL
|
||||
cJuA5yY3dC4Y998abWEox7/Y1BhnBbpJuiodA341bXKkLMXQy/kwCgYIKoZIzj0E
|
||||
AwIDSAAwRQIgD12F/TfY3iV1/WDF7BSKgbD5g2MfELUIy1dtUlJQuJUCIQD69mZw
|
||||
V1Z9j2x0ZsuirS3i6AMfVyTDj0RFS3U1jeHzIQ==
|
||||
-----END CERTIFICATE-----
|
@ -1,12 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIBxDCCAWmgAwIBAgIJAJnJIdKHYwWcMAoGCCqGSM49BAMCMGcxCzAJBgNVBAYT
|
||||
AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn
|
||||
aXRzIFB0eSBMdGQxIDAeBgNVBAMMF3ZvbGF0aWxlLmZhbWlseS5pMnAubmV0MB4X
|
||||
DTE2MDQyNjE1MjAyNloXDTI2MDQyNDE1MjAyNlowZzELMAkGA1UEBhMCQVUxEzAR
|
||||
BgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5
|
||||
IEx0ZDEgMB4GA1UEAwwXdm9sYXRpbGUuZmFtaWx5LmkycC5uZXQwWTATBgcqhkjO
|
||||
PQIBBggqhkjOPQMBBwNCAARf6LBfbbfL6HInvC/4wAGaN3rj0eeLE/OdBpA93R3L
|
||||
s8EUp0YTEJHWPo9APiKMmAwQSsMJfjhNrbp+UWEnnx2LMAoGCCqGSM49BAMCA0kA
|
||||
MEYCIQDpQu2KPV5G1JOFLoZvdj+rcvEnjxM/FxkaqikwkVx8FAIhANP7DkUal+GT
|
||||
SuiCtcqM4QyIBsfsCJBWEMzovft164Bo
|
||||
-----END CERTIFICATE-----
|
@ -1,32 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
3ZUnv2ipo2fpr69NtuBnutK6gw==
|
||||
-----END CERTIFICATE-----
|
@ -1,35 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
Hz8KWVkHZg==
|
||||
-----END CERTIFICATE-----
|
@ -1,33 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
CCOJyu3XtyzFf+tAeixOnuQ=
|
||||
-----END CERTIFICATE-----
|
@ -1,32 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
bSl5VHgPXHNM8mcnndMAuzvl7jEK
|
||||
-----END CERTIFICATE-----
|
@ -1,33 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
2Q==
|
||||
-----END CERTIFICATE-----
|
@ -1,33 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
+g==
|
||||
-----END CERTIFICATE-----
|
@ -1,32 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
zc+BrVZOdcYPqu9iLXyRQ9JwwA==
|
||||
-----END CERTIFICATE-----
|
@ -1,32 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
gfvIm7v+cELj8a53EQY0LafzZqNC5kQAp916coU=
|
||||
-----END CERTIFICATE-----
|
@ -1,33 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
LD8d2z2Lgg==
|
||||
-----END CERTIFICATE-----
|
@ -203,7 +203,15 @@ public class DaemonWrapper {
|
||||
}
|
||||
|
||||
private void processAssets() {
|
||||
File holderFile = new File(i2pdpath, "assets.ready");
|
||||
// Checking if application folder exists, and create it if not
|
||||
Log.d(TAG, "checking app directory");
|
||||
File appPath = new File(i2pdpath);
|
||||
if (!appPath.exists()) {
|
||||
boolean result = appPath.mkdir();
|
||||
Log.d(TAG, "appPath.mkdir() returned " + result + " for " + appPath);
|
||||
}
|
||||
|
||||
File holderFile = new File(appPath, "assets.ready");
|
||||
String versionName = BuildConfig.VERSION_NAME; // here will be app version, like 2.XX.XX
|
||||
StringBuilder text = new StringBuilder();
|
||||
Log.d(TAG, "checking assets");
|
||||
@ -246,7 +254,7 @@ public class DaemonWrapper {
|
||||
boolean deleteResult = holderFile.delete();
|
||||
if (!deleteResult)
|
||||
Log.e(TAG, "holderFile.delete() returned " + deleteResult + ", absolute path='" + holderFile.getAbsolutePath() + "'");
|
||||
File certPath = new File(i2pdpath, "certificates");
|
||||
File certPath = new File(appPath, "certificates");
|
||||
deleteRecursive(certPath);
|
||||
|
||||
// copy assets. If processed file exists, it won't be overwritten
|
||||
@ -254,7 +262,6 @@ public class DaemonWrapper {
|
||||
copyAsset("certificates");
|
||||
copyAsset("tunnels.d");
|
||||
copyAsset("i2pd.conf");
|
||||
copyAsset("subscriptions.txt");
|
||||
copyAsset("tunnels.conf");
|
||||
|
||||
// update holder file about successful copying
|
||||
|
@ -111,7 +111,7 @@ public class I2PDActivity extends Activity {
|
||||
Log.d(TAG, "onCreate");
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
startService(new Intent(this, ForegroundService.class));
|
||||
textView = (TextView) findViewById(R.id.appStatusText);
|
||||
HTTPProxyState = (CheckBox) findViewById(R.id.service_httpproxy_box);
|
||||
SOCKSProxyState = (CheckBox) findViewById(R.id.service_socksproxy_box);
|
||||
|
@ -183,6 +183,7 @@ public class I2PDPermsAskerActivity extends Activity {
|
||||
}
|
||||
}
|
||||
} else if (requestCode == APP_STORAGE_ACCESS_REQUEST_CODE && resultCode == RESULT_OK) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
if (Environment.isExternalStorageManager()) {
|
||||
startMainActivity();
|
||||
} else {
|
||||
@ -195,5 +196,6 @@ public class I2PDPermsAskerActivity extends Activity {
|
||||
} else {
|
||||
finish(); // close the app
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
56
app/src/main/java/org/purplei2p/i2pd/I2PdQSTileService.java
Normal file
56
app/src/main/java/org/purplei2p/i2pd/I2PdQSTileService.java
Normal file
@ -0,0 +1,56 @@
|
||||
package org.purplei2p.i2pd;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.service.quicksettings.Tile;
|
||||
import android.service.quicksettings.TileService;
|
||||
import android.util.Log;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.os.Build;
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.N)
|
||||
public class I2PdQSTileService extends TileService {
|
||||
|
||||
private static final String TAG = "MyQSTileService";
|
||||
@Override
|
||||
public void onClick() {
|
||||
super.onClick();
|
||||
Log.d(TAG, "Tile clicked.");
|
||||
|
||||
try {
|
||||
// Add the FLAG_ACTIVITY_NEW_TASK flag
|
||||
Intent intent = new Intent(this, I2PDActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
|
||||
startActivityAndCollapse(intent);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Error starting ForegroundService", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onStartListening() {
|
||||
super.onStartListening();
|
||||
Log.d(TAG, "Tile started listening.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStopListening() {
|
||||
super.onStopListening();
|
||||
Log.d(TAG, "Tile stopped listening.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTileAdded() {
|
||||
super.onTileAdded();
|
||||
Log.d(TAG, "Tile added.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTileRemoved() {
|
||||
super.onTileRemoved();
|
||||
Log.d(TAG, "Tile removed.");
|
||||
}
|
||||
}
|
459
app/src/main/java/org/purplei2p/i2pd/MainPreferenceActivity.java
Normal file
459
app/src/main/java/org/purplei2p/i2pd/MainPreferenceActivity.java
Normal file
@ -0,0 +1,459 @@
|
||||
package org.purplei2p.i2pd;
|
||||
import android.os.Build;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.preference.EditTextPreference;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.PreferenceActivity;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import android.util.Log;
|
||||
import java.io.File;
|
||||
import org.apache.commons.configuration2.INIConfiguration;
|
||||
import java.io.StringWriter;
|
||||
import java.io.Writer;
|
||||
import java.nio.file.*;
|
||||
|
||||
public class MainPreferenceActivity extends PreferenceActivity {
|
||||
private Boolean isOldConfigExists = false;
|
||||
public static final String CONFIG_FILE_PATH = "/sdcard/i2pd/i2pd.conf";
|
||||
private static final String OLD_FILE_PREFIX= "__old";
|
||||
|
||||
boolean isOldConfigExists()
|
||||
{
|
||||
try {
|
||||
return new File(CONFIG_FILE_PATH + OLD_FILE_PREFIX).exists();
|
||||
}catch(Exception e) { return false; }
|
||||
}
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
addPreferencesFromResource(R.xml.preferences_i2pd);
|
||||
INIConfiguration properties = readConfiguration();
|
||||
// backup old configuration.
|
||||
if (!isOldConfigExists)
|
||||
{
|
||||
try {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
if (Files.exists(Paths.get(CONFIG_FILE_PATH))) {
|
||||
Files.copy(Paths.get(CONFIG_FILE_PATH), Paths.get(CONFIG_FILE_PATH + OLD_FILE_PREFIX));
|
||||
}
|
||||
} // if build ...
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
// delete empty sections
|
||||
{
|
||||
writeConfiguration(properties);
|
||||
}
|
||||
// Main Categoryре
|
||||
ListPreference logLevel = (ListPreference) findPreference("logLevelPreference");
|
||||
logLevel.setValue(properties.getString("log", "info"));
|
||||
logLevel.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
// Modify properties
|
||||
//properties.setProperty("log", (String) newValue);
|
||||
// Save modified properties
|
||||
//writeConfiguration(properties);
|
||||
writeConfiguration(properties, "log", (String) newValue);
|
||||
return true;
|
||||
});
|
||||
|
||||
CheckBoxPreference ipv4Enable = (CheckBoxPreference) findPreference("ipv4EnablePreference");
|
||||
boolean ipv4Enabled = Boolean.parseBoolean(properties.getString("ipv4", "true")); // "true" - значение по умолчанию, если ключ отсутствует
|
||||
ipv4Enable.setChecked(ipv4Enabled);
|
||||
ipv4Enable.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
// Modify properties
|
||||
// Convert Object to boolean
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
//properties.setProperty("ipv4", String.valueOf(newValueBoolean)); // assuming "ipv4" is the key
|
||||
// Save modified properties
|
||||
writeConfiguration(properties, "ipv4", String.valueOf(newValueBoolean));
|
||||
return true;
|
||||
});
|
||||
CheckBoxPreference ipv6Enable = (CheckBoxPreference) findPreference("ipv6EnablePreference");
|
||||
boolean ipv6Enabled = Boolean.parseBoolean(properties.getString("ipv6", "false"));
|
||||
ipv6Enable.setChecked(ipv6Enabled);
|
||||
ipv6Enable.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
// Modify properties
|
||||
// Convert Object to boolean
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
//properties.setProperty("ipv6", String.valueOf(newValueBoolean)); // assuming "ipv4" is the key
|
||||
// Save modified properties
|
||||
writeConfiguration(properties, "ipv6", String.valueOf(newValueBoolean));
|
||||
return true;
|
||||
});
|
||||
// Example for portPreference (EditTextPreference)
|
||||
EditTextPreference portPreference = (EditTextPreference) findPreference("portPreference");
|
||||
String portValue = properties.getString("port", "auto");
|
||||
portPreference.setText(portValue);
|
||||
portPreference.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
// Modify properties
|
||||
/*Properties properties = readProperties();
|
||||
// Convert Object to String (assuming "port" is the key)
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("port", newValueString);
|
||||
// Save modified properties
|
||||
writeProperties(properties);*/
|
||||
Toast.makeText(MainPreferenceActivity.this, "For security reasons, changes are not allowed. If you really want this, open the config.", Toast.LENGTH_SHORT).show();
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
// Example for bandwidthPreference (ListPreference)
|
||||
ListPreference bandwidthPreference = (ListPreference) findPreference("bandwidthPreference");
|
||||
String bandwidthValue = properties.getString("bandwidth", "L");
|
||||
bandwidthPreference.setValue(bandwidthValue);
|
||||
bandwidthPreference.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
//properties.setProperty("bandwidth", newValueString);
|
||||
writeConfiguration(properties, "bandwidth", newValueString);
|
||||
return true;
|
||||
});
|
||||
// Example for noTransitPreference (CheckBoxPreference)
|
||||
CheckBoxPreference noTransitPreference = (CheckBoxPreference) findPreference("noTransitPreference");
|
||||
boolean noTransitPreferenceEnabled = Boolean.parseBoolean(properties.getString("notransit", "false"));
|
||||
noTransitPreference.setChecked(noTransitPreferenceEnabled);
|
||||
|
||||
noTransitPreference.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
//properties.setProperty("notransit", String.valueOf(newValueBoolean));
|
||||
writeConfiguration(properties, "notransit", String.valueOf(newValueBoolean));
|
||||
return true;
|
||||
});
|
||||
CheckBoxPreference floodfillPreference = (CheckBoxPreference) findPreference("floodfillPreference");
|
||||
boolean floodfillPreferenceEnabled = Boolean.parseBoolean(properties.getString("floodfill", "false"));
|
||||
floodfillPreference.setChecked(floodfillPreferenceEnabled);
|
||||
floodfillPreference.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
//properties.setProperty("floodfill", String.valueOf(newValueBoolean));
|
||||
writeConfiguration(properties, "floodfill", String.valueOf(newValueBoolean));
|
||||
return true;
|
||||
});
|
||||
// ^^^ general
|
||||
// vvv not general (sections name)
|
||||
CheckBoxPreference ssuPreference = (CheckBoxPreference) findPreference("ssuPreference");
|
||||
boolean ssuPreferenceEnabled = Boolean.parseBoolean(properties.getString("ssu2.enabled", "true"));
|
||||
ssuPreference.setChecked(ssuPreferenceEnabled);
|
||||
ssuPreference.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
|
||||
properties.setProperty("ssu2.enabled", String.valueOf(newValueBoolean));
|
||||
writeConfiguration(properties);
|
||||
|
||||
return true; // Allow the change
|
||||
});
|
||||
// NTCP2 Category
|
||||
CheckBoxPreference ntcp2Enable = (CheckBoxPreference) findPreference("ntcp2EnablePreference");
|
||||
|
||||
boolean ntcp2EnabledPreference = Boolean.parseBoolean(properties.getString("ntcp2.enabled", "true"));
|
||||
ntcp2Enable.setChecked(ntcp2EnabledPreference);
|
||||
|
||||
|
||||
ntcp2Enable.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
|
||||
properties.setProperty("ntcp2.enabled", String.valueOf(newValueBoolean));
|
||||
writeConfiguration(properties);
|
||||
|
||||
return true; // Allow the change
|
||||
});
|
||||
CheckBoxPreference ntcp2Publish = (CheckBoxPreference) findPreference("ntcp2PublishPreference");
|
||||
|
||||
boolean ntcp2PublishEnabledPreference = Boolean.parseBoolean(properties.getString("ntcp2.published", "true"));
|
||||
ntcp2Publish.setChecked(ntcp2EnabledPreference);
|
||||
|
||||
|
||||
ntcp2Publish.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
|
||||
properties.setProperty("ntcp2.published", String.valueOf(newValueBoolean));
|
||||
writeConfiguration(properties);
|
||||
|
||||
return true; // Allow the change
|
||||
});
|
||||
// Web Console Category
|
||||
CheckBoxPreference webConsoleEnable = (CheckBoxPreference) findPreference("webConsoleEnablePreference");
|
||||
boolean webConsoleEnableValue = Boolean.parseBoolean(properties.getString("http.enabled", "false"));
|
||||
webConsoleEnable.setChecked(webConsoleEnableValue);
|
||||
|
||||
webConsoleEnable.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
properties.setProperty("http.enabled", String.valueOf(newValueBoolean));
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference webConsoleAddress = (EditTextPreference) findPreference("webConsoleAddressPreference");
|
||||
String webConsoleAddressValue = properties.getString("http.address", "127.0.0.1");
|
||||
webConsoleAddress.setText(webConsoleAddressValue);
|
||||
webConsoleAddress.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("http.address", newValueString);
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference webConsolePort = (EditTextPreference) findPreference("webConsolePortPreference");
|
||||
String webConsolePortValue = properties.getString("http.port", "7070");
|
||||
webConsolePort.setText(webConsolePortValue);
|
||||
webConsolePort.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("http.port", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
CheckBoxPreference webConsoleAuth = (CheckBoxPreference) findPreference("webConsoleAuthPreference");
|
||||
boolean webConsoleAuthValue = Boolean.parseBoolean(properties.getString("http.auth", "false"));
|
||||
webConsoleAuth.setChecked(webConsoleAuthValue);
|
||||
webConsoleAuth.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
properties.setProperty("http.auth", String.valueOf(newValueBoolean));
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference webConsoleUser = (EditTextPreference) findPreference("webConsoleUserPreference");
|
||||
String webConsoleUserValue = properties.getString("http.user", "user");
|
||||
webConsoleUser.setText(webConsoleUserValue);
|
||||
webConsoleUser.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("http.user", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference webConsolePassword = (EditTextPreference) findPreference("webConsolePasswordPreference");
|
||||
String webConsolePasswordValue = properties.getString("http.pass", "pass");
|
||||
webConsolePassword.setText(webConsolePasswordValue);
|
||||
|
||||
webConsolePassword.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("http.pass", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
// HTTP Proxy Category
|
||||
CheckBoxPreference httpProxyEnable = (CheckBoxPreference) findPreference("httpProxyEnablePreference");
|
||||
boolean httpProxyEnabled = Boolean.parseBoolean(properties.getString("httpproxy.enabled", "true"));
|
||||
httpProxyEnable.setChecked(httpProxyEnabled);
|
||||
httpProxyEnable.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
properties.setProperty("httpproxy.enabled", String.valueOf(newValueBoolean));
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference httpProxyAddress = (EditTextPreference) findPreference("httpProxyAddressPreference");
|
||||
String httpProxyAddressValue = properties.getString("httpproxy.address", "127.0.0.1");
|
||||
httpProxyAddress.setText(httpProxyAddressValue);
|
||||
|
||||
httpProxyAddress.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("httpproxy.address", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference httpProxyPort = (EditTextPreference) findPreference("httpProxyPortPreference");
|
||||
String httpProxyPortValue = properties.getString("httpproxy.port", "4444");
|
||||
httpProxyPort.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("httpproxy.port", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference httpProxyKeys = (EditTextPreference) findPreference("httpProxyKeysPreference");
|
||||
String httpProxyKeyValue = properties.getString("httpproxy.keys", "transient");
|
||||
httpProxyKeys.setText(httpProxyKeyValue);
|
||||
httpProxyKeys.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("httpproxy.keys", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
|
||||
// SOCKS Proxy Category
|
||||
CheckBoxPreference socksProxyEnable = (CheckBoxPreference) findPreference("socksProxyEnablePreference");
|
||||
boolean socksProxyEnabled = Boolean.parseBoolean(properties.getString("socksproxy.enabled", "true"));
|
||||
socksProxyEnable.setChecked(socksProxyEnabled);
|
||||
socksProxyEnable.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
properties.setProperty("socksproxy.enabled", String.valueOf(newValueBoolean));
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference socksProxyAddress = (EditTextPreference) findPreference("socksProxyAddressPreference");
|
||||
String socksProxyAddressValue = properties.getString("socksproxy.address", "127.0.0.1");
|
||||
socksProxyAddress.setText(socksProxyAddressValue);
|
||||
socksProxyAddress.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("socksproxy.address", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference socksProxyPort = (EditTextPreference) findPreference("socksProxyPortPreference");
|
||||
String socksProxyPortValue = properties.getString("socksproxy.port", "4447");
|
||||
socksProxyPort.setText(socksProxyPortValue);
|
||||
socksProxyPort.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("socksproxy.port", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference socksProxyKeys = (EditTextPreference) findPreference("socksProxyKeysPreference");
|
||||
String socksProxyKeysValue = properties.getString("socksproxy.keys", "transient");
|
||||
socksProxyKeys.setText(socksProxyKeysValue);
|
||||
socksProxyKeys.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("socksproxy.keys", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
// SAM Category
|
||||
CheckBoxPreference samEnable = (CheckBoxPreference) findPreference("samEnablePreference");
|
||||
boolean samEnableValue = Boolean.parseBoolean(properties.getString("sam.enabled", "true"));
|
||||
samEnable.setChecked(samEnableValue);
|
||||
samEnable.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
properties.setProperty("sam.enabled", String.valueOf(newValueBoolean));
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference samAddress = (EditTextPreference) findPreference("samAddressPreference");
|
||||
String samAddressValue = properties.getString("sam.address", "127.0.0.1");
|
||||
samAddress.setText(samAddressValue);
|
||||
samAddress.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("sam.address", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference samPort = (EditTextPreference) findPreference("samPortPreference");
|
||||
String samPortValue = properties.getString("sam.port", "7656");
|
||||
samPort.setText(samPortValue);
|
||||
samPort.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("sam.port", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
// UPnP Category
|
||||
CheckBoxPreference upnpEnable = (CheckBoxPreference) findPreference("upnpEnablePreference");
|
||||
boolean upnpEnableValue = Boolean.parseBoolean(properties.getString("upnp.enabled", "true"));
|
||||
upnpEnable.setChecked(upnpEnableValue);
|
||||
upnpEnable.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
boolean newValueBoolean = (boolean) newValue;
|
||||
properties.setProperty("upnp.enabled", String.valueOf(newValueBoolean));
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
EditTextPreference upnpForwardName = (EditTextPreference) findPreference("upnpForwardNamePreference");
|
||||
String upnpForwardNameValue = properties.getString("upnp.name", "I2Pd");
|
||||
upnpForwardName.setText(upnpForwardNameValue);
|
||||
upnpForwardName.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("upnp.name", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
// Limits Category
|
||||
EditTextPreference transitTunnelEdit = (EditTextPreference) findPreference("transitTunnelPreference");
|
||||
String transitTunnelValue = properties.getString("limits.transittunnels", "3000");
|
||||
transitTunnelEdit.setText(transitTunnelValue);
|
||||
transitTunnelEdit.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
String newValueString = newValue.toString();
|
||||
properties.setProperty("limits.transittunnels", newValueString);
|
||||
// Save modified properties
|
||||
writeConfiguration(properties);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
/*
|
||||
private Properties readProperties() {
|
||||
if (isOldConfigExists) {
|
||||
Toast.makeText(this, oldConfigErrMsg, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
Properties properties = new Properties();
|
||||
try (FileReader reader = new FileReader(CONFIG_FILE_PATH)) {
|
||||
properties.load(reader);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return properties;
|
||||
}
|
||||
*/
|
||||
/*
|
||||
private void writeProperties(Properties properties) {
|
||||
if (isOldConfigExists) {
|
||||
Toast.makeText(this, oldConfigErrMsg, Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
try (FileWriter writer = new FileWriter(CONFIG_FILE_PATH)) {
|
||||
properties.store(writer, "Updated properties");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
private INIConfiguration readConfiguration() {
|
||||
INIConfiguration iniConfiguration = new INIConfiguration();
|
||||
try (FileReader reader = new FileReader(CONFIG_FILE_PATH)) {
|
||||
iniConfiguration.read(reader);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return iniConfiguration;
|
||||
}
|
||||
private void writeConfiguration(INIConfiguration iniConfiguration)
|
||||
{
|
||||
writeConfiguration(iniConfiguration, "", "");
|
||||
}
|
||||
private void writeConfiguration(INIConfiguration iniConfiguration, String option, String value) {
|
||||
try (FileWriter writer = new FileWriter(CONFIG_FILE_PATH)) {
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
iniConfiguration.write(stringWriter);
|
||||
String configFileContent = stringWriter.toString();
|
||||
|
||||
// Удаление пустых секций из строки конфигурации
|
||||
String regexEmptySections = "(\\[\\w+\\]\\n(\\n|$)|\\[\\w+\\](\\z|\\Z))";
|
||||
configFileContent = configFileContent.replaceAll(regexEmptySections, "");
|
||||
|
||||
// Если указана опция для перемещения
|
||||
if (!option.isEmpty()) {
|
||||
Log.d("configFileContent","option is not empty");
|
||||
String optionPattern = option + "\\s+?=\\s+?\\w+"; // Паттерн для поиска опции с присваиванием в начале строки
|
||||
Log.d("confiFileContent","config File contains option");
|
||||
if (configFileContent.contains(option)) configFileContent = configFileContent.replaceAll(optionPattern, ""); // Удаляем первое вхождение
|
||||
Log.d("confiFileContent", option);
|
||||
Log.d("confiFileContent", value);
|
||||
Log.d("confiFileContent","Add on start line");
|
||||
configFileContent = option + "=" + value + "\n" + configFileContent;
|
||||
|
||||
}
|
||||
Log.d("configFileContent", configFileContent);
|
||||
writer.write(configFileContent);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
@ -11,8 +11,12 @@ import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.Switch;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -21,7 +25,6 @@ import java.util.Objects;
|
||||
//import org.purplei2p.i2pd.iniedotr.IniEditor;
|
||||
|
||||
public class SettingsActivity extends Activity {
|
||||
//protected IniEditor iniedit = new IniEditor();
|
||||
private String TAG = "i2pdSrvcSettings";
|
||||
private File cacheDir;
|
||||
public static String onBootFileName = "/onBoot"; // just file, empty, if exist the do autostart, if not then no.
|
||||
@ -83,9 +86,16 @@ public class SettingsActivity extends Activity {
|
||||
setContentView(R.layout.activity_settings);
|
||||
Objects.requireNonNull(getActionBar()).setDisplayHomeAsUpEnabled(true);
|
||||
Switch autostart_switch = findViewById(R.id.autostart_enable);
|
||||
|
||||
Button openPreferences = findViewById(R.id.OpenPreferences);
|
||||
cacheDir = getApplicationContext().getCacheDir();
|
||||
File onBoot = new File(cacheDir.getAbsolutePath() + onBootFileName);
|
||||
openPreferences.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent(SettingsActivity.this, MainPreferenceActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
autostart_switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
// do something, the isChecked will be
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -52,7 +52,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Large"
|
||||
android:textAppearance="@android:style/TextAppearance.Large"
|
||||
android:textColor="#DFDFDF" />
|
||||
|
||||
<Space
|
||||
@ -65,7 +65,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:text="@string/services"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Medium"
|
||||
android:textAppearance="@android:style/TextAppearance.Medium"
|
||||
android:textColor="#DFDFDF" />
|
||||
|
||||
<TableLayout
|
||||
@ -84,7 +84,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="false"
|
||||
android:text="@string/services_http_proxy"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Small"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:textColor="#DFDFDF" />
|
||||
|
||||
</TableRow>
|
||||
@ -100,7 +100,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="false"
|
||||
android:text="@string/services_socks_proxy"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Small"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:textColor="#DFDFDF" />
|
||||
</TableRow>
|
||||
|
||||
@ -115,7 +115,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="false"
|
||||
android:text="@string/services_bob"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Small"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:textColor="#DFDFDF" />
|
||||
</TableRow>
|
||||
|
||||
@ -130,7 +130,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="false"
|
||||
android:text="@string/services_sam"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Small"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:textColor="#DFDFDF" />
|
||||
</TableRow>
|
||||
|
||||
@ -145,11 +145,11 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="false"
|
||||
android:text="@string/services_i2cp"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Small"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:textColor="#DFDFDF" />
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
</ScrollView>
|
||||
|
@ -28,6 +28,18 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?android:attr/listDivider" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<Button
|
||||
android:id="@+id/OpenPreferences"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/OpenPreferences" />
|
||||
</LinearLayout>
|
||||
<!--
|
||||
<TextView
|
||||
android:id="@+id/settings_section2"
|
||||
|
46
app/src/main/res/values-pl/strings.xml
Normal file
46
app/src/main/res/values-pl/strings.xml
Normal file
@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="app_description2">Sieć bez granic</string>
|
||||
<string name="action_start">Rozpocznij</string>
|
||||
<string name="action_stop">Zatrzymaj</string>
|
||||
<string name="action_exit">Wyjdź</string>
|
||||
<string name="action_graceful_stop">Łagodne zatrzymanie</string>
|
||||
<string name="action_cancel_graceful_stop">Anuluj łagodne zatrzymanie</string>
|
||||
<string name="action_reload_tunnels_config">Załaduj ponownie tunele</string>
|
||||
<string name="action_start_webview">Otwórz konsolę Web</string>
|
||||
<string name="action_settings">Ustawienia</string>
|
||||
<string name="graceful_stop_is_already_in_progress">Łagodne zatrzymanie jest już w toku</string>
|
||||
<string name="graceful_stop_is_in_progress">Łagodne zatrzymanie w toku</string>
|
||||
<string name="gracefulShutdownInProgress">Łagodne wyłączenie w toku</string>
|
||||
<string name="already_stopped">Już zatrzymano</string>
|
||||
<string name="uninitialized">Inicjowanie aplikacji...</string>
|
||||
<string name="starting">Uruchamianie aplikacji...</string>
|
||||
<string name="jniLibraryLoaded">Wczytano biblioteki JNI</string>
|
||||
<string name="startedOkay">Aplikacja rozpoczęta</string>
|
||||
<string name="startFailed">Start nie powiódł się</string>
|
||||
<string name="stopped">Aplikacja zatrzymana</string>
|
||||
<string name="stopping">Zatrzymywanie aplikacji...</string>
|
||||
<string name="remaining">pozostało</string>
|
||||
<string name="services">Usługi wewnętrzne</string>
|
||||
<string name="services_http_proxy">Serwer proxy HTTP</string>
|
||||
<string name="services_socks_proxy">Proxy SOCKS5</string>
|
||||
<string name="title_activity_i2_pdperms_asker_prompt">Informacja</string>
|
||||
<string name="permDenied">Odmowa uprawnienia do zapisu karty SD, musisz zezwolić na kontynuowanie</string>
|
||||
<string name="permRequired">Dostęp do zapisu karty SD jest wymagany do zapisywania kluczy i innych plików w folderze I2PD na karcie SD.</string>
|
||||
<string name="retryPermRequest">Spróbuj ponownie poprosić o uprawnienia do zapisu karty SD</string>
|
||||
<string name="menu_item_battery_optimizations_str">Optymalizacja baterii</string>
|
||||
<string name="battery_optimizations_enabled">Optymalizacje zużycia baterii włączone</string>
|
||||
<string name="battery_optimizations_enabled_explained">Twój Android wykonuje ciężkie optymalizacje baterii na I2PD, co może doprowadzić do zamknięcia demona bez żadnego innego powodu.\nZaleca się wyłączenie optymalizacji baterii.</string>
|
||||
<string name="battery_optimizations_enabled_dialog">Twój Android wykonuje ciężkie optymalizacje baterii na I2PD, co może doprowadzić do zamknięcia demona bez żadnego innego powodu.\n\nZostaniesz teraz poproszony o zezwolenie na ich wyłączenie.</string>
|
||||
<string name="continue_str">Kontynuuj</string>
|
||||
<string name="device_does_not_support_disabling_battery_optimizations">Twoja wersja Androida nie obsługuje rezygnacji z optymalizacji baterii</string>
|
||||
<string name="os_version_does_not_support_battery_optimizations_show_os_dialog_api">Twoja wersja Android OS nie obsługuje wyświetlania okna dialogowego optymalizacji baterii dla aplikacji.</string>
|
||||
<string name="shutdown_canceled">Anulowano planowane wyłączenie</string>
|
||||
<string name="tunnels_reloading">Przeładowywanie konfiguracji tuneli...</string>
|
||||
<string name="settings_section0">Ustawienia ogólne</string>
|
||||
<string name="settings_section_tunnels">Tunele</string>
|
||||
<string name="autostart_enabled">Uruchom przy starcie systemu</string>
|
||||
<string name="add_tunnel_button">Dodaj tunel</string>
|
||||
<string name="add_tunnel">Zarządzanie tunelami</string>
|
||||
<string name="del_tunnel_button">Usuń tunel</string>
|
||||
</resources>
|
@ -11,33 +11,33 @@
|
||||
<string name="action_settings">Configurações</string>
|
||||
<string name="graceful_stop_is_already_in_progress">Saída Graciosa já está em progresso</string>
|
||||
<string name="graceful_stop_is_in_progress">Saída Graciosa em progresso</string>
|
||||
<string name="gracefulShutdownInProgress">Saída Graciosa em progresso</string>
|
||||
<string name="gracefulShutdownInProgress">Desligamento gracioso em progresso</string>
|
||||
<string name="already_stopped">Já parou</string>
|
||||
<string name="uninitialized">Inicializando aplicação...</string>
|
||||
<string name="uninitialized">Iniciando aplicação...</string>
|
||||
<string name="starting">Iniciando aplicação...</string>
|
||||
<string name="jniLibraryLoaded">Bibliotecas JNI carregadas</string>
|
||||
<string name="startedOkay">Aplicação iniciada</string>
|
||||
<string name="startFailed">Inicialização falhou</string>
|
||||
<string name="stopped">Aplicação parou</string>
|
||||
<string name="stopping">Parando aplicação...</string>
|
||||
<string name="remaining">faltando</string>
|
||||
<string name="remaining">restando</string>
|
||||
<string name="services">Serviços internos</string>
|
||||
<string name="services_http_proxy">Proxy HTTP</string>
|
||||
<string name="services_socks_proxy">Proxy SOCKS5</string>
|
||||
<string name="title_activity_i2_pdperms_asker_prompt">Permissão</string>
|
||||
<string name="permDenied">Permissões de escrita no cartão SD negadas, você precisa permitir isso para continuar</string>
|
||||
<string name="permRequired">Permissões de escrita no cartão SD são necessárias para gravar as chaves e outros arquivos na pasta do I2PD no cartão SD.</string>
|
||||
<string name="retryPermRequest">Tente novamente solicitar as permissões de escrita ao cartão SD</string>
|
||||
<string name="permDenied">Permissão de escrita no cartão SD foi negada, você precisa permitir isso para continuar</string>
|
||||
<string name="permRequired">Permissão de escrita no cartão SD é necessária para gravar as chaves e outros arquivos na pasta do I2PD no cartão SD.</string>
|
||||
<string name="retryPermRequest">Tente novamente solicitar a permissão de escrita no cartão SD</string>
|
||||
<string name="menu_item_battery_optimizations_str">Otimizações da Bateria</string>
|
||||
<string name="battery_optimizations_enabled">Otimizações da bateria ativadas</string>
|
||||
<string name="battery_optimizations_enabled_explained">O seu sistema está realizando fortes otimizações de uso de bateria pelo I2PD que podem levar a fechamentos inesperados do serviço.\nÉ recomendando desativar estas otimizações de bateria.</string>
|
||||
<string name="battery_optimizations_enabled_dialog">O seu sistema está realizando fortes otimizações de uso de bateria pelo I2PD que podem levar a fechamentos inesperados do serviço.\n\nVocê será solicitado a permitir desativá-las.</string>
|
||||
<string name="battery_optimizations_enabled_explained">O seu sistema está realizando fortes otimizações de uso de bateria pelo I2PD que podem levar a fechamentos inesperados do serviço.\nÉ recomendando desativar estas otimizações.</string>
|
||||
<string name="battery_optimizations_enabled_dialog">O seu sistema está realizando fortes otimizações de uso de bateria pelo I2PD que podem levar a fechamentos inesperados do serviço.\n\nVocê será solicitado a desativá-las.</string>
|
||||
<string name="continue_str">Continuar</string>
|
||||
<string name="device_does_not_support_disabling_battery_optimizations">A sua versão do Android não suporta definir otimizações de bateria</string>
|
||||
<string name="device_does_not_support_disabling_battery_optimizations">A sua versão do Android não suporta a opção de não usar otimizações de bateria</string>
|
||||
<string name="os_version_does_not_support_battery_optimizations_show_os_dialog_api">A versão do seu sistema Android não suporta mostrar a caixa de diálogo para otimizações de bateria para aplicativos.</string>
|
||||
<string name="shutdown_canceled">Desligamento planejado cancelado</string>
|
||||
<string name="tunnels_reloading">Recarregando configurações dos túneis...</string>
|
||||
<string name="settings_section0">Configurações usuais</string>
|
||||
<string name="settings_section0">Configurações comuns</string>
|
||||
<string name="settings_section_tunnels">Túneis</string>
|
||||
<string name="autostart_enabled">Iniciar no boot</string>
|
||||
<string name="add_tunnel_button">Adicionar túnel</string>
|
||||
|
@ -43,4 +43,5 @@
|
||||
<string name="add_tunnel_button">Добавить туннель</string>
|
||||
<string name="add_tunnel">Управление туннелями</string>
|
||||
<string name="del_tunnel_button">Удалить туннель</string>
|
||||
<string name="OpenPreferences">Открыть основные настройки</string>
|
||||
</resources>
|
||||
|
@ -60,5 +60,6 @@
|
||||
<string name="add_tunnel">Tunnels management</string>
|
||||
|
||||
<string name="del_tunnel_button">Delete tunnel</string>
|
||||
<string name="OpenPreferences">Open i2pd settings</string>
|
||||
|
||||
</resources>
|
||||
|
@ -3,97 +3,108 @@
|
||||
|
||||
<PreferenceCategory android:title="Main">
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="true"
|
||||
android:key="check_box_preference_1"
|
||||
android:title="Log" />
|
||||
<ListPreference
|
||||
android:id="@+id/LogLevel"
|
||||
android:defaultValue="1"
|
||||
android:entries="@array/pref_loglevel"
|
||||
android:entryValues="@array/pref_loglevel"
|
||||
android:key="list_preference_1"
|
||||
android:key="logLevelPreference"
|
||||
android:summary="Logging level to file. Use 'none' to reduce memory usage"
|
||||
android:title="Log level" />
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/IPV4Enable"
|
||||
android:defaultValue="true"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="ipv4EnablePreference"
|
||||
android:title="IPv4" />
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/IPV6Enable"
|
||||
android:defaultValue="false"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="ipv6EnablePreference"
|
||||
android:title="IPv6" />
|
||||
<EditTextPreference
|
||||
android:defaultValue="Default value"
|
||||
android:key="edit_text_preference_1"
|
||||
android:id="@+id/Port"
|
||||
android:defaultValue="auto"
|
||||
android:key="portPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Port" />
|
||||
<ListPreference
|
||||
android:id="@+id/BandWithType"
|
||||
android:entries="@array/pref_bandwidth_limit_flags"
|
||||
android:entryValues="@array/pref_bandwidth_limit_flags"
|
||||
android:key="list_preference_1"
|
||||
android:key="bandwidthPreference"
|
||||
android:summary="Bandwidth limit for transit traffic"
|
||||
android:title="Bandwidth" />
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/NoTransitCheckbox"
|
||||
android:defaultValue="false"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="noTransitPreference"
|
||||
android:summary="Disable transit"
|
||||
android:title="No transit" />
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/FloodfillCheckBox"
|
||||
android:defaultValue="false"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="floodfillPreference"
|
||||
android:summary="Uses more battery"
|
||||
android:title="Floodfill" />
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/SSUCheckBox"
|
||||
android:defaultValue="true"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="ssuPreference"
|
||||
android:title="SSU" />
|
||||
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="NTCP2">
|
||||
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/NTCP2Checkbox"
|
||||
android:defaultValue="true"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="ntcp2EnablePreference"
|
||||
android:title="Enable" />
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/NTCPPublishCheckbox"
|
||||
android:defaultValue="true"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="ntcp2PublishPreference"
|
||||
android:summary="Disable to make unable to connect to your device"
|
||||
android:title="Publish" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory android:title="Web Console">
|
||||
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/WebConsoleEnableCheckbox"
|
||||
android:defaultValue="true"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="webConsoleEnablePreference"
|
||||
android:title="Enable" />
|
||||
<EditTextPreference
|
||||
android:id="@+id/WebConsoleIPText"
|
||||
android:defaultValue="127.0.0.1"
|
||||
android:key="edit_text_preference_1"
|
||||
android:key="webConsoleAddressPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Address" />
|
||||
<EditTextPreference
|
||||
android:id="@+id/WebConsolePortText"
|
||||
android:defaultValue="7070"
|
||||
android:key="edit_text_preference_1"
|
||||
android:key="webConsolePortPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Port" />
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/WebConsoleUseAuthCheckbox"
|
||||
android:defaultValue="false"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="webConsoleAuthPreference"
|
||||
android:summary="Use HTTP authorization to access Web Console"
|
||||
android:title="Autorization" />
|
||||
android:title="Authorization" />
|
||||
<EditTextPreference
|
||||
android:id="@+id/WebConsoleUser"
|
||||
android:defaultValue="Default value"
|
||||
android:key="edit_text_preference_1"
|
||||
android:key="webConsoleUserPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="User" />
|
||||
<EditTextPreference
|
||||
android:id="@+id/WebConsoleUserPassword"
|
||||
android:defaultValue="Default value"
|
||||
android:key="edit_text_preference_1"
|
||||
android:key="webConsolePasswordPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Password" />
|
||||
@ -101,24 +112,28 @@
|
||||
<PreferenceCategory android:title="@string/services_http_proxy">
|
||||
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/EnableHTTPProxy"
|
||||
android:defaultValue="true"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="httpProxyEnablePreference"
|
||||
android:title="Enable" />
|
||||
<EditTextPreference
|
||||
android:id="@+id/HTTPProxyHost"
|
||||
android:defaultValue="127.0.0.1"
|
||||
android:key="edit_text_preference_1"
|
||||
android:key="httpProxyAddressPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Address" />
|
||||
<EditTextPreference
|
||||
android:id="@+id/HTTPProxyPort"
|
||||
android:defaultValue="4444"
|
||||
android:key="edit_text_preference_1"
|
||||
android:key="httpProxyPortPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Port" />
|
||||
<EditTextPreference
|
||||
android:defaultValue="proxy-keys.dat"
|
||||
android:key="edit_text_preference_1"
|
||||
android:id="@+id/HTTPProxyKeys"
|
||||
android:defaultValue="transient"
|
||||
android:key="httpProxyKeysPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Keys" />
|
||||
@ -126,24 +141,28 @@
|
||||
<PreferenceCategory android:title="SOCKS Proxy">
|
||||
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/SocksProxyEnableCheckbox"
|
||||
android:defaultValue="false"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="socksProxyEnablePreference"
|
||||
android:title="Enable" />
|
||||
<EditTextPreference
|
||||
android:id="@+id/SocksProxyHost"
|
||||
android:defaultValue="127.0.0.1"
|
||||
android:key="edit_text_preference_1"
|
||||
android:key="socksProxyAddressPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Address" />
|
||||
<EditTextPreference
|
||||
android:id="@+id/SocksProxyPort"
|
||||
android:defaultValue="4447"
|
||||
android:key="edit_text_preference_1"
|
||||
android:key="socksProxyPortPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Port" />
|
||||
<EditTextPreference
|
||||
android:defaultValue="proxy-keys.dat"
|
||||
android:key="edit_text_preference_1"
|
||||
android:id="@+id/SocksProxyKey"
|
||||
android:defaultValue="transient"
|
||||
android:key="socksProxyKeysPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Keys" />
|
||||
@ -151,18 +170,21 @@
|
||||
<PreferenceCategory android:title="SAM">
|
||||
|
||||
<CheckBoxPreference
|
||||
android:id="@+id/SAMEnable"
|
||||
android:defaultValue="false"
|
||||
android:key="check_box_preference_1"
|
||||
android:key="samEnablePreference"
|
||||
android:title="Enable" />
|
||||
<EditTextPreference
|
||||
android:id="@+id/SAMHost"
|
||||
android:defaultValue="127.0.0.1"
|
||||
android:key="edit_text_preference_1"
|
||||
android:key="samAddressPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Address" />
|
||||
<EditTextPreference
|
||||
android:id="@+id/SAMPort"
|
||||
android:defaultValue="7656"
|
||||
android:key="edit_text_preference_1"
|
||||
android:key="samPortPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Port" />
|
||||
@ -170,12 +192,14 @@
|
||||
<PreferenceCategory android:title="UPnP">
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="true"
|
||||
android:key="check_box_preference_1"
|
||||
android:id="@+id/UPnPEnable"
|
||||
android:defaultValue="false"
|
||||
android:key="upnpEnablePreference"
|
||||
android:title="Enable" />
|
||||
<EditTextPreference
|
||||
android:id="@+id/UPnPForwardName"
|
||||
android:defaultValue="I2Pd"
|
||||
android:key="edit_text_preference_1"
|
||||
android:key="upnpForwardNamePreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:title="Forwarding name" />
|
||||
@ -183,11 +207,12 @@
|
||||
<PreferenceCategory android:title="Limits">
|
||||
|
||||
<EditTextPreference
|
||||
android:defaultValue="50"
|
||||
android:key="edit_text_preference_1"
|
||||
android:id="@+id/TransitTunnelEdit"
|
||||
android:defaultValue="3000"
|
||||
android:key="transitTunnelPreference"
|
||||
android:selectAllOnFocus="true"
|
||||
android:singleLine="true"
|
||||
android:summary="Limit possible built transit tunnels"
|
||||
android:title="Transit tunnels" />
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
||||
</PreferenceScreen>
|
||||
|
@ -4,9 +4,6 @@ LOCAL_MODULE := i2pd
|
||||
LOCAL_CPP_FEATURES := rtti exceptions
|
||||
LOCAL_C_INCLUDES += $(IFADDRS_PATH) $(LIB_SRC_PATH) $(LIB_CLIENT_SRC_PATH) $(LANG_SRC_PATH) $(DAEMON_SRC_PATH)
|
||||
LOCAL_STATIC_LIBRARIES := \
|
||||
boost_system \
|
||||
boost_date_time \
|
||||
boost_filesystem \
|
||||
boost_program_options \
|
||||
crypto \
|
||||
ssl \
|
||||
@ -29,27 +26,6 @@ LOCAL_SRC_FILES := \
|
||||
|
||||
include $(BUILD_EXECUTABLE)
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := boost_system
|
||||
LOCAL_SRC_FILES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/lib/libboost_system.a
|
||||
LOCAL_EXPORT_C_INCLUDES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/include
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := boost_date_time
|
||||
LOCAL_SRC_FILES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/lib/libboost_date_time.a
|
||||
LOCAL_EXPORT_C_INCLUDES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/include
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := boost_filesystem
|
||||
LOCAL_SRC_FILES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/lib/libboost_filesystem.a
|
||||
LOCAL_EXPORT_C_INCLUDES := $(BOOST_PATH)/build/out/$(TARGET_ARCH_ABI)/include
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := boost_program_options
|
||||
|
@ -1 +0,0 @@
|
||||
../../app/jni/android-ifaddrs
|
1
binary/jni/android-ifaddrs
Submodule
1
binary/jni/android-ifaddrs
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit f302cc7ead971d4068661d34c2f3ba06063d8ea2
|
@ -1 +0,0 @@
|
||||
../../app/jni/boost
|
1
binary/jni/boost
Submodule
1
binary/jni/boost
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 51924ec5533a4fefb5edf99feaeded794c06a4fb
|
103
binary/jni/build.sh
Executable file
103
binary/jni/build.sh
Executable file
@ -0,0 +1,103 @@
|
||||
#!/bin/bash
|
||||
|
||||
# https://stackoverflow.com/a/246128
|
||||
SOURCE="${0}"
|
||||
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
||||
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
|
||||
SOURCE="$(readlink "$SOURCE")"
|
||||
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
||||
done
|
||||
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
|
||||
|
||||
# Checking Android SDK
|
||||
if [ -z "$ANDROID_HOME" -a "$ANDROID_HOME" == "" ]; then
|
||||
echo -e "\033[31mFailed! ANDROID_HOME is empty. Run 'export ANDROID_HOME=[PATH_TO_SDK]'\033[0m"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Checking Android NDK
|
||||
if [ -z "$ANDROID_NDK_HOME" -a "$ANDROID_NDK_HOME" == "" ]; then
|
||||
echo -e "\033[31mFailed! ANDROID_NDK_HOME is empty. Run 'export ANDROID_NDK_HOME=[PATH_TO_NDK]'\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
_NDK_OPTS="-j `nproc` NDK_MODULE_PATH=$DIR"
|
||||
|
||||
_help()
|
||||
{
|
||||
echo "Syntax: $(basename "$SOURCE") [-m|d|s|h|v]"
|
||||
echo "Options:"
|
||||
echo "b Build binary."
|
||||
echo "d Debug build."
|
||||
echo "s Strip binaries."
|
||||
echo "x Skip libraries rebuild."
|
||||
echo "v Verbose NDK output."
|
||||
echo "h Print this Help."
|
||||
echo
|
||||
}
|
||||
|
||||
_failed()
|
||||
{
|
||||
echo "Compilation failed";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
while getopts ":dbsvxh" option; do
|
||||
case $option in
|
||||
d) # debug build
|
||||
_NDK_OPTS="$_NDK_OPTS NDK_DEBUG=1"
|
||||
;;
|
||||
b) # build binary
|
||||
_BINARY=1
|
||||
;;
|
||||
s) # strip binaries
|
||||
_STRIP=1
|
||||
;;
|
||||
x) # skip libraries rebuild
|
||||
_SKIP_LIBS=1
|
||||
;;
|
||||
v) # verbose output
|
||||
_NDK_OPTS="$_NDK_OPTS V=1 NDK_LOG=1"
|
||||
;;
|
||||
h) # display help
|
||||
_help
|
||||
exit;;
|
||||
\?) # Invalid option
|
||||
echo "Error: Invalid option. Use $(basename "$SOURCE") -h for help"
|
||||
exit;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Building
|
||||
if [ -z "$_SKIP_LIBS" ]; then
|
||||
echo "Building boost..."
|
||||
./build_boost.sh
|
||||
[ $? -ne 0 ] && _failed
|
||||
|
||||
echo "Building openssl..."
|
||||
./build_openssl.sh
|
||||
[ $? -ne 0 ] && _failed
|
||||
|
||||
echo "Building miniupnpc..."
|
||||
./build_miniupnpc.sh
|
||||
[ $? -ne 0 ] && _failed
|
||||
fi
|
||||
|
||||
if [ ! -z "$_BINARY" ]; then
|
||||
echo "Building i2pd..."
|
||||
$ANDROID_NDK_HOME/ndk-build $_NDK_OPTS
|
||||
fi
|
||||
|
||||
echo "Processing binaries (if requested)..."
|
||||
pushd $DIR/../libs > /dev/null
|
||||
for xarch in $(ls .); do
|
||||
if [ ! -z "$_STRIP" ]; then
|
||||
$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip -s $xarch/i2pd
|
||||
fi
|
||||
if [ ! -z "$_MODULE" ]; then
|
||||
mv $xarch/i2pd $xarch/libi2pd.so
|
||||
fi
|
||||
done
|
||||
popd > /dev/null
|
||||
|
||||
echo "Compilation finished"
|
@ -1 +0,0 @@
|
||||
../../app/jni/build_boost.sh
|
79
binary/jni/build_boost.sh
Executable file
79
binary/jni/build_boost.sh
Executable file
@ -0,0 +1,79 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
BOOST_VERSION=1.84.0
|
||||
BOOST_LIBS=program_options
|
||||
|
||||
function build_one {
|
||||
echo "Configuring and building..."
|
||||
CXXFLAGS="-std=c++14" \
|
||||
NCPU=$(nproc) \
|
||||
./build-android.sh \
|
||||
--boost=$BOOST_VERSION \
|
||||
--arch=$CPU \
|
||||
--target-version=$API \
|
||||
--with-libraries=$BOOST_LIBS \
|
||||
--layout=system \
|
||||
$ANDROID_NDK_HOME
|
||||
}
|
||||
|
||||
function checkPreRequisites {
|
||||
|
||||
if ! [ -d "boost" ] || ! [ "$(ls -A boost)" ]; then
|
||||
echo -e "\033[31mFailed! Submodule 'boost' not found!\033[0m"
|
||||
echo -e "\033[31mTry to run: 'git submodule update --init'\033[0m"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z "$ANDROID_NDK_HOME" -a "$ANDROID_NDK_HOME" == "" ]; then
|
||||
echo -e "\033[31mFailed! ANDROID_NDK_HOME is empty. Run 'export ANDROID_NDK_HOME=[PATH_TO_NDK]'\033[0m"
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
function build {
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
x86_64)
|
||||
API=21
|
||||
TARGET=x86_64
|
||||
build_one
|
||||
;;
|
||||
arm64)
|
||||
API=21
|
||||
CPU=arm64-v8a
|
||||
build_one
|
||||
;;
|
||||
x86)
|
||||
API=16
|
||||
CPU=x86
|
||||
build_one
|
||||
;;
|
||||
arm)
|
||||
API=16
|
||||
CPU=armeabi-v7a
|
||||
build_one
|
||||
;;
|
||||
all)
|
||||
API=16
|
||||
build_one
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
checkPreRequisites
|
||||
|
||||
cd boost
|
||||
|
||||
# disable verbose output
|
||||
sed -i -E -e 's/d\+2/d\+0/' build-android.sh
|
||||
|
||||
if (( $# == 0 )); then
|
||||
build all
|
||||
else
|
||||
build $@
|
||||
fi
|
@ -1 +0,0 @@
|
||||
../../app/jni/build_miniupnpc.sh
|
92
binary/jni/build_miniupnpc.sh
Executable file
92
binary/jni/build_miniupnpc.sh
Executable file
@ -0,0 +1,92 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
CMAKE_VERSION=3.22.1
|
||||
|
||||
function build_one {
|
||||
mkdir -p build out/$CPU
|
||||
cd build
|
||||
|
||||
cmake \
|
||||
-G "Unix Makefiles" \
|
||||
-DUPNPC_BUILD_SHARED=False \
|
||||
-DUPNPC_BUILD_TESTS=False \
|
||||
-DUPNPC_BUILD_SAMPLE=False \
|
||||
-DANDROID_NATIVE_API_LEVEL=$API \
|
||||
-DANDROID_ABI=$CPU \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DANDROID_NDK=$ANDROID_NDK_HOME \
|
||||
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
|
||||
-DCMAKE_INSTALL_PREFIX=../out/$CPU \
|
||||
..
|
||||
|
||||
echo "Building..."
|
||||
cmake --build . -- libminiupnpc-static
|
||||
make install
|
||||
|
||||
cd ..
|
||||
rm -rf build
|
||||
}
|
||||
|
||||
function checkPreRequisites {
|
||||
|
||||
if ! [ -d "miniupnp" ] || ! [ "$(ls -A miniupnp)" ]; then
|
||||
echo -e "\033[31mFailed! Submodule 'miniupnp' not found!\033[0m"
|
||||
echo -e "\033[31mTry to run: 'git submodule update --init'\033[0m"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z "$ANDROID_HOME" -a "$ANDROID_HOME" == "" ]; then
|
||||
echo -e "\033[31mFailed! ANDROID_HOME is empty. Run 'export ANDROID_HOME=[PATH_TO_SDK]'\033[0m"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z "$ANDROID_NDK_HOME" -a "$ANDROID_NDK_HOME" == "" ]; then
|
||||
echo -e "\033[31mFailed! ANDROID_NDK_HOME is empty. Run 'export ANDROID_NDK_HOME=[PATH_TO_NDK]'\033[0m"
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
function build {
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
x86_64)
|
||||
API=21
|
||||
CPU=x86_64
|
||||
build_one
|
||||
;;
|
||||
arm64)
|
||||
API=21
|
||||
CPU=arm64-v8a
|
||||
build_one
|
||||
;;
|
||||
arm)
|
||||
API=16
|
||||
CPU=armeabi-v7a
|
||||
build_one
|
||||
;;
|
||||
x86)
|
||||
API=16
|
||||
CPU=x86
|
||||
build_one
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
checkPreRequisites
|
||||
|
||||
cd miniupnp/miniupnpc
|
||||
rm -rf build out
|
||||
|
||||
# add cmake from Android SDK to PATH
|
||||
PATH=$ANDROID_HOME/cmake/$CMAKE_VERSION/bin:$PATH
|
||||
|
||||
if (( $# == 0 )); then
|
||||
build x86_64 arm64 arm x86
|
||||
else
|
||||
build $@
|
||||
fi
|
@ -1 +0,0 @@
|
||||
../../app/jni/build_openssl.sh
|
93
binary/jni/build_openssl.sh
Executable file
93
binary/jni/build_openssl.sh
Executable file
@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
HOST_OS=`uname -a`
|
||||
|
||||
function build_one {
|
||||
mkdir -p out/$CPU
|
||||
|
||||
echo "Configuring OpenSSL for $CPU..."
|
||||
./Configure \
|
||||
--prefix="$PWD/out/$CPU" \
|
||||
$TARGET \
|
||||
no-shared \
|
||||
no-tests \
|
||||
-D__ANDROID_API__=$API \
|
||||
-Wno-macro-redefined
|
||||
|
||||
echo "Building OpenSSL for $CPU..."
|
||||
make -j $(nproc) > out/build.log
|
||||
|
||||
make install_sw >> out/build.log
|
||||
|
||||
make clean
|
||||
}
|
||||
|
||||
function checkPreRequisites {
|
||||
|
||||
if ! [ -d "openssl" ] || ! [ "$(ls -A openssl)" ]; then
|
||||
echo -e "\033[31mFailed! Submodule 'openssl' not found!\033[0m"
|
||||
echo -e "\033[31mTry to run: 'git submodule update --init'\033[0m"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z "$ANDROID_NDK_HOME" -a "$ANDROID_NDK_HOME" == "" ]; then
|
||||
echo -e "\033[31mFailed! ANDROID_NDK_HOME is empty. Run 'export ANDROID_NDK_HOME=[PATH_TO_NDK]'\033[0m"
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
function build {
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
x86_64)
|
||||
API=21
|
||||
CPU=x86_64
|
||||
TARGET=android-x86_64
|
||||
build_one
|
||||
;;
|
||||
arm64)
|
||||
API=21
|
||||
CPU=arm64-v8a
|
||||
TARGET=android-arm64
|
||||
build_one
|
||||
;;
|
||||
arm)
|
||||
API=16
|
||||
CPU=armeabi-v7a
|
||||
TARGET=android-arm
|
||||
build_one
|
||||
;;
|
||||
x86)
|
||||
API=16
|
||||
CPU=x86
|
||||
TARGET=android-x86
|
||||
build_one
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
checkPreRequisites
|
||||
|
||||
cd openssl
|
||||
rm -rf out
|
||||
|
||||
if [[ "$HOST_OS" == *"_NT-"* ]]; then
|
||||
PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/windows-x86_64/bin:$PATH
|
||||
else
|
||||
PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
|
||||
fi
|
||||
|
||||
if [[ -f 'Makefile' ]]; then
|
||||
make clean
|
||||
fi
|
||||
|
||||
if (( $# == 0 )); then
|
||||
build x86_64 arm64 arm x86
|
||||
else
|
||||
build $@
|
||||
fi
|
@ -1 +0,0 @@
|
||||
../../app/jni/i2pd
|
1
binary/jni/i2pd
Submodule
1
binary/jni/i2pd
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit fb90b01f6c2f71831f854b3f43fc79fde246ee33
|
@ -1 +0,0 @@
|
||||
../../app/jni/miniupnp
|
1
binary/jni/miniupnp
Submodule
1
binary/jni/miniupnp
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 6576eb611b670c4841cc65095914275d6be008b2
|
@ -1 +0,0 @@
|
||||
../../app/jni/openssl
|
1
binary/jni/openssl
Submodule
1
binary/jni/openssl
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit e04bd3433fd84e1861bf258ea37928d9845e6a86
|
0
binary/libs/.gitkeep
Normal file
0
binary/libs/.gitkeep
Normal file
2
fastlane/metadata/android/en-US/changelogs/2510000.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/2510000.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Updated codebase to 2.51.0
|
||||
* Added minimal configuration menu (cudos: @wipedlifepotato)
|
1
fastlane/metadata/android/en-US/changelogs/2520000.txt
Normal file
1
fastlane/metadata/android/en-US/changelogs/2520000.txt
Normal file
@ -0,0 +1 @@
|
||||
* Updated codebase to 2.52.0
|
2
fastlane/metadata/android/en-US/changelogs/2530000.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/2530000.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Updated codebase to 2.53.0
|
||||
* Change application service algorithm to work with binary instead of library. More changes about status in main activity are pending
|
2
fastlane/metadata/android/en-US/changelogs/2530100.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/2530100.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Updated codebase to 2.53.1
|
||||
* Revert to usage of the JNI
|
1
fastlane/metadata/android/en-US/changelogs/2540000.txt
Normal file
1
fastlane/metadata/android/en-US/changelogs/2540000.txt
Normal file
@ -0,0 +1 @@
|
||||
* Updated codebase to 2.54.0
|
1
fastlane/metadata/android/en-US/changelogs/2550000.txt
Normal file
1
fastlane/metadata/android/en-US/changelogs/2550000.txt
Normal file
@ -0,0 +1 @@
|
||||
* Updated codebase to 2.55.0
|
1
fastlane/metadata/android/en-US/changelogs/2560000.txt
Normal file
1
fastlane/metadata/android/en-US/changelogs/2560000.txt
Normal file
@ -0,0 +1 @@
|
||||
* Updated codebase to 2.56.0
|
9
fastlane/metadata/android/fa/full_description.txt
Normal file
9
fastlane/metadata/android/fa/full_description.txt
Normal file
@ -0,0 +1,9 @@
|
||||
<b>I2P</b> (پروتکل اینترنت نامرئی) یک لایه جهانی و بی نام و نشان از شبکه است.
|
||||
تمام ارتباطات بر روی I2P بی نام و نشان و سرتاسر رمزگذاری شده، مشترکین آدرس IP واقعی خود را آشکار نمیکنند.
|
||||
|
||||
<b>I2P client</b> یک نرم افزاری است که برای ساخت و تعامل با شبکه های بی نام و نشان I2P استفاده می شود.
|
||||
این شبکه ها عموما برای ارتباطات بی نام و نشان همتا به همتا (اشتراک فایل، رمزارز) و ارتباطات بی نام و نشان کاربر و سرور (وبسایت ها، پیامرسان ها، سرور های گفت و گو) استفاده می شود.
|
||||
|
||||
<b>I2P</b> به همه مردم دنیا این امکان را میدهد که بدون محدودیت ارتباط برقرار کنند و اطلاعات به اشتراک بگذارند.
|
||||
|
||||
برای اطلاعات بیشتر در مورد <b>I2P</b>, میتوانید <a href="https://en.m.wikipedia.org/wiki/I2P">در ویکیپدیا مطالعه کنید</a>.
|
1
fastlane/metadata/android/fa/short_description.txt
Normal file
1
fastlane/metadata/android/fa/short_description.txt
Normal file
@ -0,0 +1 @@
|
||||
پیاده سازی کاملی از I2P به زبان ++C
|
9
fastlane/metadata/android/pl/full_description.txt
Normal file
9
fastlane/metadata/android/pl/full_description.txt
Normal file
@ -0,0 +1,9 @@
|
||||
<b>I2P</b> (Invisible Internet Protocol) jest uniwersalną, anonimową warstwą sieci.
|
||||
Wszystkie komunikaty przez I2P są anonimowe i zaszyfrowane end-to-end, uczestnicy nie ujawniają swoich rzeczywistych adresów IP.
|
||||
|
||||
<b>Klient I2P</b> jest oprogramowaniem używanym do budowania i używania anonimowych sieci I2P.
|
||||
Sieci takie są powszechnie używane do anonimowych aplikacji peer-to-peer (udostępnianie plików, kryptowaluty) i anonimowych aplikacji klient-serwer (strony internetowe, komunikatory błyskawiczne, serwery czatów).
|
||||
|
||||
<b>I2P</b> pozwala ludziom z całego świata komunikować się i dzielić się informacjami bez ograniczeń.
|
||||
|
||||
Aby uzyskać więcej informacji na temat <b>I2P</b>możesz przeczytać artykuł <a href="https://en.m.wikipedia.org/wiki/I2P">na Wikipedii</a>.
|
1
fastlane/metadata/android/pl/short_description.txt
Normal file
1
fastlane/metadata/android/pl/short_description.txt
Normal file
@ -0,0 +1 @@
|
||||
Pełna implementacja klienta I2P napisanej w C++
|
@ -2,8 +2,8 @@
|
||||
Todas as comunicações pela I2P são anonimas e criptografadas ponto-a-ponto, os participantes não revelam os seus verdadeiros endereços IP.
|
||||
|
||||
<b>Um cliente I2P</b> é um software usado para construir e utilizar redes I2P anonimas.
|
||||
Tais redes são comumente usadas em aplicações P2P anonimas (compartilhamento de arquivos, cripttomoedas) e aplicações cliente-servidor (websites, mensageiros instantâneos, servidores de chat).
|
||||
Tais redes são comumente usadas em aplicações P2P anonimas (compartilhamento de arquivos, criptomoedas) e aplicações cliente-servidor (websites, mensageiros instantâneos, servidores de chat).
|
||||
|
||||
O <b> I2P </b> permite às pessoas de todo o mundo se comunicarem e compartilhar informações sem restrições.
|
||||
O <b> I2P </b> permite às pessoas de todo o mundo se comunicarem e compartilharem informações sem restrições.
|
||||
|
||||
Para mais informações sobre a <b> I2P </b>, você pode ler o <a href="https://pt.wikipedia.org/wiki/I2P"> artigo na Wikipédia </a>.
|
Loading…
x
Reference in New Issue
Block a user