From 6828ea2d1ff12be274c0820155d3112f2ff2bd1c Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Tue, 23 Oct 2018 07:45:14 -0400 Subject: [PATCH] add more stuff from builder repo --- CMakeLists.txt | 47 +++-- android/.gitignore | 18 ++ android/AndroidManifest.xml | 59 ++++++ android/build.gradle | 75 ++++++++ android/build.xml | 96 +++++++++ android/proguard-project.txt | 20 ++ android/project.properties | 14 ++ android/res/drawable/icon.png | Bin 0 -> 6565 bytes android/res/layout/activity_perms_asker.xml | 27 +++ .../res/layout/activity_perms_explanation.xml | 27 +++ android/res/menu/options_main.xml | 11 ++ android/res/values/strings.xml | 14 ++ android/res/values/template-dimens.xml | 16 ++ android/settings.gradle | 1 + .../network/loki/lokinet/LokiNetActivity.java | 182 ++++++++++++++++++ .../src/network/loki/lokinet/Lokinet_JNI.java | 31 +++ .../lokinet/NetworkStateChangeReceiver.java | 30 +++ .../loki/lokinet/PermsAskerActivity.java | 171 ++++++++++++++++ .../lokinet/PermsExplanationActivity.java | 38 ++++ debian/changelog | 58 ++++++ debian/compat | 1 + debian/control | 19 ++ debian/copyright | 27 +++ debian/lokinet.1 | 35 ++++ debian/lokinet.install | 3 + debian/lokinet.manpages | 1 + debian/lokinet.service | 14 ++ debian/postinst | 3 + debian/rules | 21 ++ debian/source/format | 1 + 30 files changed, 1044 insertions(+), 16 deletions(-) create mode 100644 android/.gitignore create mode 100755 android/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/build.xml create mode 100644 android/proguard-project.txt create mode 100644 android/project.properties create mode 100644 android/res/drawable/icon.png create mode 100644 android/res/layout/activity_perms_asker.xml create mode 100644 android/res/layout/activity_perms_explanation.xml create mode 100644 android/res/menu/options_main.xml create mode 100755 android/res/values/strings.xml create mode 100644 android/res/values/template-dimens.xml create mode 100644 android/settings.gradle create mode 100755 android/src/network/loki/lokinet/LokiNetActivity.java create mode 100644 android/src/network/loki/lokinet/Lokinet_JNI.java create mode 100644 android/src/network/loki/lokinet/NetworkStateChangeReceiver.java create mode 100644 android/src/network/loki/lokinet/PermsAskerActivity.java create mode 100644 android/src/network/loki/lokinet/PermsExplanationActivity.java create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/lokinet.1 create mode 100644 debian/lokinet.install create mode 100644 debian/lokinet.manpages create mode 100644 debian/lokinet.service create mode 100644 debian/postinst create mode 100755 debian/rules create mode 100644 debian/source/format diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c0b15fff..4104a85d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -134,6 +134,9 @@ set(LIBS ${THREAD_LIB} ${MALLOC_LIB} ${FS_LIB}) set(LIB lokinet) set(SHARED_LIB ${LIB}) set(STATIC_LIB ${LIB}-static) +set(CRYPTOGRAPHY_LIB ${LIB}-cryptography) +set(PLATFORM_LIB ${LIB}-platform) +set(ANDROID_LIB ${LIB}android) set(TT_ROOT vendor/libtuntap-master) @@ -192,6 +195,26 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(ISOLATE_PROC_SRC llarp/linux/netns.cpp) endif() + +set(CXX_COMPAT_SRC + vendor/cppbackport-master/lib/fs/rename.cpp + vendor/cppbackport-master/lib/fs/filestatus.cpp + vendor/cppbackport-master/lib/fs/filetype.cpp + vendor/cppbackport-master/lib/fs/cleanpath.cpp + vendor/cppbackport-master/lib/fs/perms.cpp + vendor/cppbackport-master/lib/fs/equivalent.cpp + vendor/cppbackport-master/lib/fs/current_path.cpp + vendor/cppbackport-master/lib/fs/basename.cpp + vendor/cppbackport-master/lib/fs/tempdir.cpp + vendor/cppbackport-master/lib/fs/create_directory.cpp + vendor/cppbackport-master/lib/fs/path.cpp + vendor/cppbackport-master/lib/fs/remove.cpp + vendor/cppbackport-master/lib/fs/diriter.cpp + vendor/cppbackport-master/lib/fs/copyfile.cpp + vendor/cppbackport-master/lib/fs/absolute.cpp + vendor/cppbackport-master/lib/fs/direntry.cpp +) + set(LIB_PLATFORM_SRC # string stuff llarp/str.cpp @@ -218,6 +241,8 @@ set(LIB_PLATFORM_SRC # win32 inline code llarp/win32_inet.c llarp/win32_intrnl.c +# c++17 compat code + ${CXX_COMPAT_SRC} ) set(NTRU_AVX_SRC @@ -331,9 +356,10 @@ set(CRYPTOGRAPHY_SRC ${CHACHA_SRC} ${ED25519_SRC} ${X25519_SRC} - ${SHA512_SRC}) - + ${SHA512_SRC} + ${NTRU_SRC}) +add_library(${CRYPTOGRAPHY_LIB} ${CRYPTOGRAPHY_SRC}) set(UTP_SRC @@ -352,8 +378,6 @@ endif() set(LIB_SRC ${UTP_SRC} - ${NTRU_SRC} - ${CRYPTOGRAPHY_SRC} llarp/address_info.cpp llarp/bencode.cpp llarp/buffer.cpp @@ -458,18 +482,9 @@ foreach(F ${ALL_SRC}) set_source_files_properties(${F} PROPERTIES COMPILE_FLAGS -DLOG_TAG=\\\"${F}\\\") endforeach(F) -set(LIB lokinet) -set(SHARED_LIB ${LIB}) -set(STATIC_LIB ${LIB}-static) -set(PLATFORM_LIB ${LIB}-platform) -set(ANDROID_LIB ${LIB}android) - # TODO: exclude this from includes and expose stuff properly for rcutil include_directories(llarp) include_directories(include) -# Neuro Linux box hack: -include_directories(/usr/local/include) -include_directories(${sodium_INCLUDE_DIR}) set(RC_EXE rcutil) set(DNS_EXE dns) @@ -489,7 +504,7 @@ set(ABYSS_SRC add_library(${ABYSS_LIB} ${ABYSS_SRC}) if(SHADOW) -add_shadow_plugin(shadow-plugin-${SHARED_LIB} ${EXE_SRC} ${LIB_SRC} ${LIB_PLATFORM_SRC} ${CPP_BACKPORT_SRC} ${ABYSS_SRC}) +add_shadow_plugin(shadow-plugin-${SHARED_LIB} ${EXE_SRC} ${LIB_SRC} ${LIB_PLATFORM_SRC} ${CPP_BACKPORT_SRC} ${ABYSS_SRC} ${CRYPTOGRAPHY_SRC}) target_link_libraries(shadow-plugin-${SHARED_LIB} ${LIBS}) install(TARGETS shadow-plugin-${SHARED_LIB} DESTINATION plugins) else() @@ -510,7 +525,7 @@ if(WITH_STATIC) if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") target_link_libraries(${PLATFORM_LIB} -lcap) endif() - target_link_libraries(${STATIC_LIB} ${LIBS} ${PLATFORM_LIB}) + target_link_libraries(${STATIC_LIB} ${CRYPTOGRAPHY_LIB} ${LIBS} ${PLATFORM_LIB}) if(NOT WITH_SHARED) target_link_libraries(${EXE} ${STATIC_LINK_LIBS} ${STATIC_LIB} ${PLATFORM_LIB}) @@ -535,7 +550,7 @@ if(WITH_STATIC) endif() if(WITH_SHARED) - add_library(${SHARED_LIB} SHARED ${LIB_SRC} ${LIB_PLATFORM_SRC}) + add_library(${SHARED_LIB} SHARED ${LIB_SRC} ${LIB_PLATFORM_SRC} ${CRYPTOGRAPHY_SRC}) if (WIN32) set(${LIBS} ${LIBS} ws2_32 iphlpapi) endif(WIN32) diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 000000000..b8e7e769a --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,18 @@ +gen +tests +bin +libs +log* +obj +.gradle +.idea +.externalNativeBuild +ant.properties +local.properties +build.sh +android.iml +build +gradle +gradlew +gradlew.bat +gradle.properties \ No newline at end of file diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml new file mode 100755 index 000000000..52df9ac8d --- /dev/null +++ b/android/AndroidManifest.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + CE + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 000000000..227d93a2b --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,75 @@ +buildscript { + repositories { + mavenCentral() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.3.3' + } +} + +apply plugin: 'com.android.application' + + +repositories { + jcenter() + maven { + url 'https://maven.google.com' + } +} + +android { + compileSdkVersion 28 + buildToolsVersion "28.0.1" + defaultConfig { + applicationId "network.loki.lokinet" + targetSdkVersion 28 + minSdkVersion 14 + versionCode 1 + versionName "0.3.1" + ndk { + abiFilters 'x86' + } + externalNativeBuild { + cmake { + targets "lokinetandroid" + arguments "-DANDROID=ON" + } + } + packagingOptions{ + doNotStrip "*/armeabi/*.so" + doNotStrip "*/armeabi-v7a/*.so" + doNotStrip "*/x86/*.so" + } + } + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + java.srcDirs = ['src'] + res.srcDirs = ['res'] + jniLibs.srcDirs = ['libs'] + assets.srcDirs = ['assets'] + } + } + signingConfigs { + jeff { + storeFile file("jeff-apk.jks") + keyAlias "jeff-apk" + } + } + buildTypes { + release { + minifyEnabled true + //signingConfig signingConfigs.jeff + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' + } + } + externalNativeBuild { + cmake { + path lokinetCMake + + } + } +} + + diff --git a/android/build.xml b/android/build.xml new file mode 100644 index 000000000..ffe9081c8 --- /dev/null +++ b/android/build.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/proguard-project.txt b/android/proguard-project.txt new file mode 100644 index 000000000..f2fe1559a --- /dev/null +++ b/android/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/android/project.properties b/android/project.properties new file mode 100644 index 000000000..919ca9c3b --- /dev/null +++ b/android/project.properties @@ -0,0 +1,14 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-28 diff --git a/android/res/drawable/icon.png b/android/res/drawable/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..30ad9ddcb15345bb334ecb0e5c043aeb4b77392c GIT binary patch literal 6565 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 + + + +