diff --git a/gradle/variables.gradle b/gradle/variables.gradle index f2e558396b41e0342e55e0fdc1239e685196a268..89e95b3b2526d28a8b93c80efb250629e78027cf 100644 --- a/gradle/variables.gradle +++ b/gradle/variables.gradle @@ -8,5 +8,5 @@ ext { junit_version = '5.7.2' mockk_version = '1.10.4' ktlint_plugin_version = '10.2.1' - onionwrapper_version = '0.0.1' + onionwrapper_version = '0.0.2' } diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 8eb938069ff3ec38d8b8e80325b7b1c21cac82cd..5eef64ae7a97325b7a2a71dbdf83139f2f8f0623 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -3093,12 +3093,12 @@ <sha256 value="a473a77476dd631630ebb3a37b34812f94e6a7245c39765a14d7231b90e0645b" origin="Generated by Gradle"/> </artifact> </component> - <component group="org.briarproject" name="dont-kill-me-lib" version="0.2.6"> - <artifact name="dont-kill-me-lib-0.2.6.aar"> - <sha256 value="8a4cc201143227c0865c2edfba035f71109bf02e1ab26444fa3e42d3c569960f" origin="Generated by Gradle"/> + <component group="org.briarproject" name="dont-kill-me-lib" version="0.2.7"> + <artifact name="dont-kill-me-lib-0.2.7.aar"> + <sha256 value="8a9540941fd927e1c127096a7a9b4aa61ce2f2965d2e24f849be92f9e57213c4" origin="Generated by Gradle"/> </artifact> - <artifact name="dont-kill-me-lib-0.2.6.module"> - <sha256 value="2646adc39d022c2ed366493bdc92247d1afe6b5dbd41783235e096062fcc31ae" origin="Generated by Gradle"/> + <artifact name="dont-kill-me-lib-0.2.7.module"> + <sha256 value="6f1deb46d52d513dccde6ee992f3b9ffa8f35001e7e5446fa8239596ae56eb99" origin="Generated by Gradle"/> </artifact> </component> <component group="org.briarproject" name="jtorctl" version="0.5"> @@ -3133,28 +3133,28 @@ <sha256 value="9feb0d95ecef6e394b2a55ec4e451ec659f84a705345976053de166b157a0460" origin="Generated by Gradle"/> </artifact> </component> - <component group="org.briarproject" name="onionwrapper-android" version="0.0.1"> - <artifact name="onionwrapper-android-0.0.1.aar"> - <sha256 value="959115946586daa090f057645cf75992407a59025e221c3bf88d2aa930ef3919" origin="Generated by Gradle"/> + <component group="org.briarproject" name="onionwrapper-android" version="0.0.2"> + <artifact name="onionwrapper-android-0.0.2.aar"> + <sha256 value="d196f1fe5d8b750866ea09d80509716aae7645d39b2c85433994718dbebeb4d1" origin="Generated by Gradle"/> </artifact> - <artifact name="onionwrapper-android-0.0.1.module"> - <sha256 value="8f6abee13082ca633178932555c8261ff46099181179c2f6015c916ed436d181" origin="Generated by Gradle"/> + <artifact name="onionwrapper-android-0.0.2.module"> + <sha256 value="53b951f528bcd09804c98be99933160beaea329f64c9d691a971ce61d67b4497" origin="Generated by Gradle"/> </artifact> </component> - <component group="org.briarproject" name="onionwrapper-core" version="0.0.1"> - <artifact name="onionwrapper-core-0.0.1.jar"> - <sha256 value="a1937506b00ee6620e909a500e5d004be81f94a6f7d7c898e1a9e841a8ae8a2a" origin="Generated by Gradle"/> + <component group="org.briarproject" name="onionwrapper-core" version="0.0.2"> + <artifact name="onionwrapper-core-0.0.2.jar"> + <sha256 value="7038e960c9e59803f0e2c19444dbb5214cd99e5a7463c0a01c45318e07a0eb80" origin="Generated by Gradle"/> </artifact> - <artifact name="onionwrapper-core-0.0.1.module"> - <sha256 value="c76d8a5c0a61483088280a1d8122e0c0325e4f4882625d89911eede1656d8753" origin="Generated by Gradle"/> + <artifact name="onionwrapper-core-0.0.2.module"> + <sha256 value="71b6e4713dff5920a85585232ebe9909024885c9178b8ca5cf391bbcbe0f30b8" origin="Generated by Gradle"/> </artifact> </component> - <component group="org.briarproject" name="onionwrapper-java" version="0.0.1"> - <artifact name="onionwrapper-java-0.0.1.jar"> - <sha256 value="102ccea934d02b13702fd28e890e27e342db8b669a4c84bb54a3783cb8926552" origin="Generated by Gradle"/> + <component group="org.briarproject" name="onionwrapper-java" version="0.0.2"> + <artifact name="onionwrapper-java-0.0.2.jar"> + <sha256 value="87a3f4082174dbbd32c4f5f062b46af1d3fedd8cfa1ec84f6ce6ccb6e3674fb6" origin="Generated by Gradle"/> </artifact> - <artifact name="onionwrapper-java-0.0.1.module"> - <sha256 value="6b31d326baf6be7be0f51fbcebea8b2ab5a5612a6a05916921f4dee9c7ab86cc" origin="Generated by Gradle"/> + <artifact name="onionwrapper-java-0.0.2.module"> + <sha256 value="80baa417137ebe8069c846a63d6dff03b90eb9d075d3975a305e92a6773220f4" origin="Generated by Gradle"/> </artifact> </component> <component group="org.briarproject" name="snowflake-android" version="2.5.1"> diff --git a/mailbox-android/build.gradle b/mailbox-android/build.gradle index 75cce90a25e8e414669a6c0cc799fce55b24c5ae..ed5bed7c3ba1618b4093b9a176188660c05dbceb 100644 --- a/mailbox-android/build.gradle +++ b/mailbox-android/build.gradle @@ -77,7 +77,7 @@ configurations { dependencies { implementation project(path: ':mailbox-core', configuration: 'default') - implementation 'org.briarproject:dont-kill-me-lib:0.2.6' + implementation 'org.briarproject:dont-kill-me-lib:0.2.7' implementation "org.briarproject:onionwrapper-android:$onionwrapper_version" implementation 'com.github.tony19:logback-android:3.0.0' diff --git a/mailbox-android/src/main/java/org/briarproject/android/dontkillmelib/wakelock/AndroidWakeLockModule.java b/mailbox-android/src/main/java/org/briarproject/android/dontkillmelib/wakelock/AndroidWakeLockModule.java deleted file mode 100644 index 0b243089269742b7e4723e7558399b9a21feeb71..0000000000000000000000000000000000000000 --- a/mailbox-android/src/main/java/org/briarproject/android/dontkillmelib/wakelock/AndroidWakeLockModule.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.briarproject.android.dontkillmelib.wakelock; - -import javax.inject.Singleton; - -import dagger.Module; -import dagger.Provides; -import dagger.hilt.InstallIn; -import dagger.hilt.components.SingletonComponent; - -@Module -@InstallIn(SingletonComponent.class) -public class AndroidWakeLockModule { - - @Provides - @Singleton - AndroidWakeLockManager provideWakeLockManager( - AndroidWakeLockManagerImpl wakeLockManager) { - return wakeLockManager; - } -} diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.kt index 02ce9bc366c3deab30161e44d7e5fcce4a2e239b..67206b68870f82d55bfbc1052773c0097cab8c7a 100644 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.kt +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.kt @@ -27,6 +27,8 @@ import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import org.briarproject.android.dontkillmelib.DozeHelper import org.briarproject.android.dontkillmelib.DozeHelperImpl +import org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManager +import org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManagerFactory import org.briarproject.mailbox.core.CoreModule import org.briarproject.mailbox.core.db.DatabaseConfig import org.briarproject.mailbox.core.files.FileProvider @@ -79,4 +81,9 @@ internal class AppModule { @Singleton @Provides fun provideSystem() = System { code -> exitProcess(code) } + + @Singleton + @Provides + fun provideAndroidWakeLockManager(app: Application): AndroidWakeLockManager = + AndroidWakeLockManagerFactory.createAndroidWakeLockManager(app) } diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidLocationUtils.java b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidLocationUtils.java deleted file mode 100644 index 4fb9b179f8ee6868688586fe31b2ea3e74513897..0000000000000000000000000000000000000000 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidLocationUtils.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Briar Mailbox - * Copyright (C) 2021-2022 The Briar Project - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. - * - */ - -package org.briarproject.mailbox.core.tor; - -import android.annotation.SuppressLint; -import android.app.Application; -import android.content.Context; -import android.telephony.TelephonyManager; -import android.text.TextUtils; - -import org.briarproject.mailbox.core.system.LocationUtils; -import org.slf4j.Logger; - -import java.util.Locale; - -import javax.inject.Inject; - -import static android.content.Context.TELEPHONY_SERVICE; -import static org.slf4j.LoggerFactory.getLogger; - -class AndroidLocationUtils implements LocationUtils { - - private static final Logger LOG = getLogger(AndroidLocationUtils.class); - - private final Context appContext; - - @Inject - AndroidLocationUtils(Application app) { - appContext = app.getApplicationContext(); - } - - /** - * This guesses the current country from the first of these sources that - * succeeds (also in order of likelihood of being correct): - * - * <ul> - * <li>Phone network. This works even when no SIM card is inserted, or a - * foreign SIM card is inserted.</li> - * <li>SIM card. This is only an heuristic and assumes the user is not - * roaming.</li> - * <li>User locale. This is an even worse heuristic.</li> - * </ul> - * <p> - * Note: this is very similar to <a href="https://android.googlesource.com/platform/frameworks/base/+/cd92588%5E/location/java/android/location/CountryDetector.java"> - * this API</a> except it seems that Google doesn't want us to use it for - * some reason - both that class and {@code Context.COUNTRY_CODE} are - * annotated {@code @hide}. - */ - @Override - @SuppressLint("DefaultLocale") - public String getCurrentCountry() { - String countryCode = getCountryFromPhoneNetwork(); - if (!TextUtils.isEmpty(countryCode)) return countryCode.toUpperCase(); - LOG.info("Falling back to SIM card country"); - countryCode = getCountryFromSimCard(); - if (!TextUtils.isEmpty(countryCode)) return countryCode.toUpperCase(); - LOG.info("Falling back to user-defined locale"); - return Locale.getDefault().getCountry(); - } - - private String getCountryFromPhoneNetwork() { - Object o = appContext.getSystemService(TELEPHONY_SERVICE); - TelephonyManager tm = (TelephonyManager) o; - return tm == null ? "" : tm.getNetworkCountryIso(); - } - - private String getCountryFromSimCard() { - Object o = appContext.getSystemService(TELEPHONY_SERVICE); - TelephonyManager tm = (TelephonyManager) o; - return tm == null ? "" : tm.getSimCountryIso(); - } -} diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt index 2dff2c815c7e368bcfa3e765020465b1a3e1e4ba..de9c842356972be10fe26b6ad9b0a5038ca43740 100644 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt @@ -34,8 +34,9 @@ import org.briarproject.mailbox.core.lifecycle.LifecycleManager import org.briarproject.mailbox.core.lifecycle.ServiceException import org.briarproject.mailbox.core.server.WebServerManager import org.briarproject.mailbox.core.settings.SettingsManager -import org.briarproject.mailbox.core.system.LocationUtils +import org.briarproject.onionwrapper.AndroidLocationUtilsFactory import org.briarproject.onionwrapper.CircumventionProvider +import org.briarproject.onionwrapper.LocationUtils import org.slf4j.Logger import org.slf4j.LoggerFactory.getLogger import java.util.concurrent.Executor @@ -124,9 +125,9 @@ internal class AndroidTorModule { } @Provides - fun provideLocationUtils(locationUtils: AndroidLocationUtils): LocationUtils { - return locationUtils - } + @Singleton + fun provideLocationUtils(app: Application): LocationUtils = + AndroidLocationUtilsFactory.createAndroidLocationUtils(app) @Provides @Singleton diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java index 29f88d530931c5ab9dc836414d91841135b19653..6da3f8e7e9b90336a5aaccd00aa25b1614a90e27 100644 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java @@ -20,15 +20,13 @@ package org.briarproject.mailbox.core.tor; import android.app.Application; -import android.content.Context; import android.os.Build; -import org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLock; import org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManager; import org.briarproject.mailbox.core.settings.SettingsManager; -import org.briarproject.mailbox.core.system.LocationUtils; import org.briarproject.onionwrapper.AndroidTorWrapper; import org.briarproject.onionwrapper.CircumventionProvider; +import org.briarproject.onionwrapper.LocationUtils; import java.io.File; import java.util.ArrayList; diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/system/LocationUtils.java b/mailbox-core/src/main/java/org/briarproject/mailbox/core/system/LocationUtils.java deleted file mode 100644 index 96440876eb6e48685641c2b2fc5e18bdee47f535..0000000000000000000000000000000000000000 --- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/system/LocationUtils.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Briar Mailbox - * Copyright (C) 2021-2022 The Briar Project - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. - * - */ - -package org.briarproject.mailbox.core.system; - -public interface LocationUtils { - - /** - * Get the country the device is currently located in, or "" if it cannot - * be determined. - * <p> - * The country codes are formatted upper-case and as per <a href=" - * https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO 3166-1 alpha 2</a>. - */ - String getCurrentCountry(); -} diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java b/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java index ca56fadcb0d96b66d8772265dd859a87970908e2..23a6e53a7cbecc80bebd3a4d7bf6742b9868d043 100644 --- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java +++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java @@ -27,9 +27,9 @@ import org.briarproject.mailbox.core.lifecycle.IoExecutor; import org.briarproject.mailbox.core.lifecycle.ServiceException; import org.briarproject.mailbox.core.settings.Settings; import org.briarproject.mailbox.core.settings.SettingsManager; -import org.briarproject.mailbox.core.system.LocationUtils; import org.briarproject.onionwrapper.CircumventionProvider; import org.briarproject.onionwrapper.CircumventionProvider.BridgeType; +import org.briarproject.onionwrapper.LocationUtils; import org.briarproject.onionwrapper.TorWrapper; import org.briarproject.onionwrapper.TorWrapper.HiddenServiceProperties; import org.briarproject.onionwrapper.TorWrapper.Observer; diff --git a/mailbox-lib/.gitignore b/mailbox-lib/.gitignore index 8376b62300be1314da3229f59f10027007198768..aa09c1522e06e125c214c11e5f98e0644f5eca70 100644 --- a/mailbox-lib/.gitignore +++ b/mailbox-lib/.gitignore @@ -1 +1,3 @@ -/src/main/resources/*.zip +/src/main/resources/aarch64/ +/src/main/resources/armhf/ +/src/main/resources/x86_64/ diff --git a/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt b/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt index 94a56973bc65b5fa4effe7533a9ce42e4ccb83b6..da296ff2c6a01de5e812db48ad78d5c1dd84100b 100644 --- a/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt +++ b/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt @@ -30,13 +30,13 @@ import org.briarproject.mailbox.core.lifecycle.IoExecutor import org.briarproject.mailbox.core.lifecycle.LifecycleManager import org.briarproject.mailbox.core.server.WebServerManager import org.briarproject.mailbox.core.settings.SettingsManager -import org.briarproject.mailbox.core.system.LocationUtils import org.briarproject.mailbox.core.util.OsUtils.isLinux import org.briarproject.onionwrapper.CircumventionProvider +import org.briarproject.onionwrapper.JavaLocationUtilsFactory +import org.briarproject.onionwrapper.LocationUtils import org.slf4j.Logger import org.slf4j.LoggerFactory.getLogger import java.io.File -import java.util.Locale import java.util.concurrent.Executor import javax.inject.Singleton @@ -108,6 +108,6 @@ class JavaTorModule { @Provides @Singleton - fun provideLocationUtils() = LocationUtils { Locale.getDefault().country } + fun provideLocationUtils(): LocationUtils = JavaLocationUtilsFactory.createJavaLocationUtils() } diff --git a/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java b/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java index dd4d55e590bbfeb21a3b074684252fcb948c521d..e3ac9442c417773c6c296454d9c97fd87f4a9398 100644 --- a/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java +++ b/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java @@ -20,8 +20,8 @@ package org.briarproject.mailbox.core.tor; import org.briarproject.mailbox.core.settings.SettingsManager; -import org.briarproject.mailbox.core.system.LocationUtils; import org.briarproject.onionwrapper.CircumventionProvider; +import org.briarproject.onionwrapper.LocationUtils; import org.briarproject.onionwrapper.UnixTorWrapper; import java.io.File;