From 4ba87947ae3346280da76e13ef6981a631e43c3c Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 18 Oct 2023 14:04:32 +0200 Subject: [PATCH 1/5] tools: bump wg-go Signed-off-by: Jason A. Donenfeld --- tunnel/tools/libwg-go/go.mod | 8 ++++---- tunnel/tools/libwg-go/go.sum | 19 +++++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/tunnel/tools/libwg-go/go.mod b/tunnel/tools/libwg-go/go.mod index 9318ebcf1..9f9381fff 100644 --- a/tunnel/tools/libwg-go/go.mod +++ b/tunnel/tools/libwg-go/go.mod @@ -3,12 +3,12 @@ module golang.zx2c4.com/wireguard/android go 1.20 require ( - golang.org/x/sys v0.6.0 - golang.zx2c4.com/wireguard v0.0.0-20230223181233-21636207a675 + golang.org/x/sys v0.13.0 + golang.zx2c4.com/wireguard v0.0.0-20231022001213-2e0774f246fb ) require ( - golang.org/x/crypto v0.7.0 // indirect - golang.org/x/net v0.8.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect ) diff --git a/tunnel/tools/libwg-go/go.sum b/tunnel/tools/libwg-go/go.sum index 3b49b497d..e5f8fc830 100644 --- a/tunnel/tools/libwg-go/go.sum +++ b/tunnel/tools/libwg-go/go.sum @@ -1,10 +1,13 @@ -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 h1:B82qJJgjvYKsXS9jeunTOisW56dUokqW/FOteYJJ/yg= golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= -golang.zx2c4.com/wireguard v0.0.0-20230223181233-21636207a675 h1:/J/RVnr7ng4fWPRH3xa4WtBJ1Jp+Auu4YNLmGiPv5QU= -golang.zx2c4.com/wireguard v0.0.0-20230223181233-21636207a675/go.mod h1:whfbyDBt09xhCYQWtO2+3UVjlaq6/9hDZrjg2ZE6SyA= +golang.zx2c4.com/wireguard v0.0.0-20231022001213-2e0774f246fb h1:c5tyN8sSp8jSDxdCCDXVOpJwYXXhmTkNMt+g0zTSOic= +golang.zx2c4.com/wireguard v0.0.0-20231022001213-2e0774f246fb/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA= +gvisor.dev/gvisor v0.0.0-20230927004350-cbd86285d259 h1:TbRPT0HtzFP3Cno1zZo7yPzEEnfu8EjLfl6IU9VfqkQ= From 7a656954a2d5a972a393b3e63c1c4dce6f353faa Mon Sep 17 00:00:00 2001 From: Alon Blayer-Gat Date: Sun, 22 Oct 2023 09:00:15 +0300 Subject: [PATCH 2/5] gradle: 8.4, agp 8.3.0-alpha09, kotlin 1.9.10, lint errors Signed-off-by: Alon Blayer-Gat --- build.gradle.kts | 4 ++-- gradle/libs.versions.toml | 6 +++--- gradle/wrapper/gradle-wrapper.properties | 4 ++-- gradlew | 14 +++++++------- .../java/com/wireguard/android/Application.kt | 15 +-------------- .../com/wireguard/android/QuickTileService.kt | 2 ++ .../android/updater/SnackbarUpdateShower.kt | 5 ++++- 7 files changed, 21 insertions(+), 29 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index fbcca4515..bdbe150b2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ plugins { tasks { wrapper { - gradleVersion = "8.3" - distributionSha256Sum = "591855b517fc635b9e04de1d05d5e76ada3f89f5fc76f87978d1b245b4f69225" + gradleVersion = "8.4" + distributionSha256Sum = "3e1af3ae886920c3ac87f7a91f816c0c7c436f276a6eefdb3da152100fef72ae" } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d8527046b..0363dc0cb 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] -agp = "8.2.0-beta06" -kotlin = "1.9.0" +agp = "8.3.0-alpha09" +kotlin = "1.9.10" [libraries] androidx-activity-ktx = "androidx.activity:activity-ktx:1.8.0" @@ -19,7 +19,7 @@ desugarJdkLibs = "com.android.tools:desugar_jdk_libs:2.0.3" google-material = "com.google.android.material:material:1.10.0" jsr305 = "com.google.code.findbugs:jsr305:3.0.2" junit = "junit:junit:4.13.2" -kotlinx-coroutines-android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.0" +kotlinx-coroutines-android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3" zxing-android-embedded = "com.journeyapps:zxing-android-embedded:4.3.0" [plugins] diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 864d6c475..46671acb6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=591855b517fc635b9e04de1d05d5e76ada3f89f5fc76f87978d1b245b4f69225 -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionSha256Sum=3e1af3ae886920c3ac87f7a91f816c0c7c436f276a6eefdb3da152100fef72ae +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 0adc8e1a5..1aa94a426 100755 --- a/gradlew +++ b/gradlew @@ -145,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -153,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -202,11 +202,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/ui/src/main/java/com/wireguard/android/Application.kt b/ui/src/main/java/com/wireguard/android/Application.kt index 4dcec508d..3269bf3c4 100644 --- a/ui/src/main/java/com/wireguard/android/Application.kt +++ b/ui/src/main/java/com/wireguard/android/Application.kt @@ -4,8 +4,6 @@ */ package com.wireguard.android -import android.content.Context -import android.content.Intent import android.os.Build import android.os.StrictMode import android.os.StrictMode.ThreadPolicy @@ -39,6 +37,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import java.lang.ref.WeakReference import java.util.Locale +import kotlin.system.exitProcess class Application : android.app.Application() { private val futureBackend = CompletableDeferred() @@ -49,18 +48,6 @@ class Application : android.app.Application() { private lateinit var toolsInstaller: ToolsInstaller private lateinit var tunnelManager: TunnelManager - override fun attachBaseContext(context: Context) { - super.attachBaseContext(context) - if (BuildConfig.MIN_SDK_VERSION > Build.VERSION.SDK_INT) { - val intent = Intent(Intent.ACTION_MAIN) - intent.addCategory(Intent.CATEGORY_HOME) - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - startActivity(intent) - System.exit(0) - } - } - private suspend fun determineBackend(): Backend { var backend: Backend? = null if (UserKnobs.enableKernelModule.first() && WgQuickBackend.hasKernelSupport()) { diff --git a/ui/src/main/java/com/wireguard/android/QuickTileService.kt b/ui/src/main/java/com/wireguard/android/QuickTileService.kt index 9be2cc2bd..fe7e0f6ec 100644 --- a/ui/src/main/java/com/wireguard/android/QuickTileService.kt +++ b/ui/src/main/java/com/wireguard/android/QuickTileService.kt @@ -4,6 +4,7 @@ */ package com.wireguard.android +import android.annotation.SuppressLint import android.app.PendingIntent import android.content.Intent import android.graphics.Bitmap @@ -51,6 +52,7 @@ class QuickTileService : TileService() { return ret } + @SuppressLint("StartActivityAndCollapseDeprecated") override fun onClick() { when (val tunnel = tunnel) { null -> { diff --git a/ui/src/main/java/com/wireguard/android/updater/SnackbarUpdateShower.kt b/ui/src/main/java/com/wireguard/android/updater/SnackbarUpdateShower.kt index 30da3b07c..b380ad889 100644 --- a/ui/src/main/java/com/wireguard/android/updater/SnackbarUpdateShower.kt +++ b/ui/src/main/java/com/wireguard/android/updater/SnackbarUpdateShower.kt @@ -5,6 +5,7 @@ package com.wireguard.android.updater +import android.annotation.SuppressLint import android.content.Intent import android.net.Uri import android.view.View @@ -22,6 +23,7 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch +import kotlin.system.exitProcess import kotlin.time.Duration.Companion.seconds class SnackbarUpdateShower(private val fragment: Fragment) { @@ -95,6 +97,7 @@ class SnackbarUpdateShower(private val fragment: Fragment) { } } + @SuppressLint("UnsafeImplicitIntentLaunch") fun attach(view: View, anchor: View?) { val snackbar = SwapableSnackbar(fragment, view, anchor) val context = fragment.requireContext() @@ -164,7 +167,7 @@ class SnackbarUpdateShower(private val fragment: Fragment) { intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(intent) - System.exit(0) + exitProcess(0) }.show() } } From 569176cde3d9a211c5bea2730e412a51958750a8 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sun, 22 Oct 2023 15:06:43 +0300 Subject: [PATCH 3/5] tools: bump wg-go Signed-off-by: Jason A. Donenfeld --- tunnel/tools/elf-cleaner | 2 +- tunnel/tools/wireguard-tools | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tunnel/tools/elf-cleaner b/tunnel/tools/elf-cleaner index 7efc05090..d79447453 160000 --- a/tunnel/tools/elf-cleaner +++ b/tunnel/tools/elf-cleaner @@ -1 +1 @@ -Subproject commit 7efc05090675ec6161b7def862728086a26c3b1f +Subproject commit d79447453d50f393df185a1a28be354810ccb1b6 diff --git a/tunnel/tools/wireguard-tools b/tunnel/tools/wireguard-tools index b4f6b4f22..13f4ac4cb 160000 --- a/tunnel/tools/wireguard-tools +++ b/tunnel/tools/wireguard-tools @@ -1 +1 @@ -Subproject commit b4f6b4f229d291daf7c35c6f1e7f4841cc6d69bc +Subproject commit 13f4ac4cb74b5a833fa7f825ba785b1e5774e84f From dff13145a5a630b474aea51da0a5774e7d5dab83 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sun, 22 Oct 2023 15:06:43 +0300 Subject: [PATCH 4/5] ui: display latest handshake time Signed-off-by: Jason A. Donenfeld Signed-off-by: Alon Blayer-Gat --- .../android/util/QuantityFormatter.kt | 120 +++++++++--------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/ui/src/main/java/com/wireguard/android/util/QuantityFormatter.kt b/ui/src/main/java/com/wireguard/android/util/QuantityFormatter.kt index f7de2465c..8ff9993e2 100644 --- a/ui/src/main/java/com/wireguard/android/util/QuantityFormatter.kt +++ b/ui/src/main/java/com/wireguard/android/util/QuantityFormatter.kt @@ -3,64 +3,64 @@ * SPDX-License-Identifier: Apache-2.0 */ -package com.wireguard.android.util + package com.wireguard.android.util -import android.icu.text.ListFormatter -import android.icu.text.MeasureFormat -import android.icu.text.RelativeDateTimeFormatter -import android.icu.util.Measure -import android.icu.util.MeasureUnit -import android.os.Build -import com.wireguard.android.Application -import com.wireguard.android.R -import java.util.Locale -import kotlin.time.Duration.Companion.seconds - -object QuantityFormatter { - fun formatBytes(bytes: Long): String { - val context = Application.get().applicationContext - return when { - bytes < 1024 -> context.getString(R.string.transfer_bytes, bytes) - bytes < 1024 * 1024 -> context.getString(R.string.transfer_kibibytes, bytes / 1024.0) - bytes < 1024 * 1024 * 1024 -> context.getString(R.string.transfer_mibibytes, bytes / (1024.0 * 1024.0)) - bytes < 1024 * 1024 * 1024 * 1024L -> context.getString(R.string.transfer_gibibytes, bytes / (1024.0 * 1024.0 * 1024.0)) - else -> context.getString(R.string.transfer_tibibytes, bytes / (1024.0 * 1024.0 * 1024.0) / 1024.0) - } - } - - fun formatEpochAgo(epochMillis: Long): String { - var span = (System.currentTimeMillis() - epochMillis) / 1000 - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) - return Application.get().applicationContext.getString(R.string.latest_handshake_ago, span.seconds.toString()) - - if (span <= 0L) - return RelativeDateTimeFormatter.getInstance().format(RelativeDateTimeFormatter.Direction.PLAIN, RelativeDateTimeFormatter.AbsoluteUnit.NOW) - val measureFormat = MeasureFormat.getInstance(Locale.getDefault(), MeasureFormat.FormatWidth.WIDE) - val parts = ArrayList(4) - if (span >= 24 * 60 * 60L) { - val v = span / (24 * 60 * 60L) - parts.add(measureFormat.format(Measure(v, MeasureUnit.DAY))) - span -= v * (24 * 60 * 60L) - } - if (span >= 60 * 60L) { - val v = span / (60 * 60L) - parts.add(measureFormat.format(Measure(v, MeasureUnit.HOUR))) - span -= v * (60 * 60L) - } - if (span >= 60L) { - val v = span / 60L - parts.add(measureFormat.format(Measure(v, MeasureUnit.MINUTE))) - span -= v * 60L - } - if (span > 0L) - parts.add(measureFormat.format(Measure(span, MeasureUnit.SECOND))) - - val joined = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) - parts.joinToString() - else - ListFormatter.getInstance(Locale.getDefault(), ListFormatter.Type.UNITS, ListFormatter.Width.SHORT).format(parts) - - return Application.get().applicationContext.getString(R.string.latest_handshake_ago, joined) - } -} \ No newline at end of file + import android.icu.text.ListFormatter + import android.icu.text.MeasureFormat + import android.icu.text.RelativeDateTimeFormatter + import android.icu.util.Measure + import android.icu.util.MeasureUnit + import android.os.Build + import com.wireguard.android.Application + import com.wireguard.android.R + import java.util.Locale + import kotlin.time.Duration.Companion.seconds + + object QuantityFormatter { + fun formatBytes(bytes: Long): String { + val context = Application.get().applicationContext + return when { + bytes < 1024 -> context.getString(R.string.transfer_bytes, bytes) + bytes < 1024 * 1024 -> context.getString(R.string.transfer_kibibytes, bytes / 1024.0) + bytes < 1024 * 1024 * 1024 -> context.getString(R.string.transfer_mibibytes, bytes / (1024.0 * 1024.0)) + bytes < 1024 * 1024 * 1024 * 1024L -> context.getString(R.string.transfer_gibibytes, bytes / (1024.0 * 1024.0 * 1024.0)) + else -> context.getString(R.string.transfer_tibibytes, bytes / (1024.0 * 1024.0 * 1024.0) / 1024.0) + } + } + + fun formatEpochAgo(epochMillis: Long): String { + var span = (System.currentTimeMillis() - epochMillis) / 1000 + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) + return Application.get().applicationContext.getString(R.string.latest_handshake_ago, span.seconds.toString()) + + if (span <= 0L) + return RelativeDateTimeFormatter.getInstance().format(RelativeDateTimeFormatter.Direction.PLAIN, RelativeDateTimeFormatter.AbsoluteUnit.NOW) + val measureFormat = MeasureFormat.getInstance(Locale.getDefault(), MeasureFormat.FormatWidth.WIDE) + val parts = ArrayList(4) + if (span >= 24 * 60 * 60L) { + val v = span / (24 * 60 * 60L) + parts.add(measureFormat.format(Measure(v, MeasureUnit.DAY))) + span -= v * (24 * 60 * 60L) + } + if (span >= 60 * 60L) { + val v = span / (60 * 60L) + parts.add(measureFormat.format(Measure(v, MeasureUnit.HOUR))) + span -= v * (60 * 60L) + } + if (span >= 60L) { + val v = span / 60L + parts.add(measureFormat.format(Measure(v, MeasureUnit.MINUTE))) + span -= v * 60L + } + if (span > 0L) + parts.add(measureFormat.format(Measure(span, MeasureUnit.SECOND))) + + val joined = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) + parts.joinToString() + else + ListFormatter.getInstance(Locale.getDefault(), ListFormatter.Type.UNITS, ListFormatter.Width.SHORT).format(parts) + + return Application.get().applicationContext.getString(R.string.latest_handshake_ago, joined) + } + } \ No newline at end of file From 3cbaacc2e09edd364d0045a3ba7a807644da2ac0 Mon Sep 17 00:00:00 2001 From: Alon Blayer-Gat Date: Sun, 22 Oct 2023 15:33:27 +0300 Subject: [PATCH 5/5] lint: fixes + baseline Signed-off-by: Alon Blayer-Gat --- .idea/inspectionProfiles/Default.xml | 38 +- tunnel/build.gradle.kts | 1 + tunnel/lint-baseline.xml | 15 + .../wireguard/android/backend/GoBackend.java | 21 +- .../android/backend/WgQuickBackend.java | 11 +- .../com/wireguard/android/util/RootShell.java | 20 +- .../android/util/ToolsInstaller.java | 4 +- .../java/com/wireguard/config/Config.java | 3 +- .../com/wireguard/config/InetAddresses.java | 7 +- .../com/wireguard/config/InetEndpoint.java | 3 +- .../com/wireguard/config/InetNetwork.java | 3 +- .../java/com/wireguard/config/Interface.java | 3 +- .../main/java/com/wireguard/config/Peer.java | 3 +- .../main/java/com/wireguard/crypto/Key.java | 2 +- tunnel/tools/libwg-go/jni.c | 2 + ui/build.gradle.kts | 1 + ui/lint-baseline.xml | 5628 +++++++++++++++++ .../java/com/wireguard/android/Application.kt | 1 - .../com/wireguard/android/QuickTileService.kt | 7 +- .../android/activity/SettingsActivity.kt | 2 - .../android/activity/TvMainActivity.kt | 1 - .../android/databinding/ItemChangeListener.kt | 2 +- .../ObservableKeyedRecyclerViewAdapter.kt | 2 +- .../android/fragment/AppListDialogFragment.kt | 1 - .../wireguard/android/model/TunnelManager.kt | 3 +- .../PreferencesPreferenceDataStore.kt | 2 +- .../wireguard/android/updater/Ed25519.java | 416 +- .../com/wireguard/android/updater/Updater.kt | 8 +- .../android/util/BiometricAuthenticator.kt | 4 +- .../android/util/DownloadsFileSaver.kt | 4 +- .../android/util/QrCodeFromFileScanner.kt | 6 +- .../wireguard/android/util/TunnelImporter.kt | 32 +- .../wireguard/android/viewmodel/PeerProxy.kt | 7 +- 33 files changed, 5936 insertions(+), 327 deletions(-) create mode 100644 tunnel/lint-baseline.xml create mode 100644 ui/lint-baseline.xml diff --git a/.idea/inspectionProfiles/Default.xml b/.idea/inspectionProfiles/Default.xml index dd7663574..40c62f55d 100644 --- a/.idea/inspectionProfiles/Default.xml +++ b/.idea/inspectionProfiles/Default.xml @@ -20,13 +20,9 @@ - - - - @@ -38,7 +34,6 @@ - @@ -76,7 +71,6 @@ - -