From 060c096cdf065eb3e7b7bf3038923840adeee799 Mon Sep 17 00:00:00 2001 From: Revertron <105154+Revertron@users.noreply.github.com> Date: Fri, 9 Aug 2024 00:24:22 +0200 Subject: [PATCH] Preparation for release 0.5.7 (#62) * Updated DNS. * Removed tree info from main screen. * Added a link to public peers site. * Updated version and changelogs. --- app/build.gradle | 4 +-- .../eu/neilalexander/yggdrasil/DnsActivity.kt | 9 +++--- .../yggdrasil/GlobalApplication.kt | 26 +++++++++++++++- .../neilalexander/yggdrasil/MainActivity.kt | 3 -- .../yggdrasil/PacketTunnelProvider.kt | 7 ----- .../neilalexander/yggdrasil/PeersActivity.kt | 4 +++ app/src/main/res/layout/activity_main.xml | 30 ++----------------- app/src/main/res/layout/activity_peers.xml | 17 +++++++++++ app/src/main/res/values-ru/strings.xml | 8 ++--- app/src/main/res/values/strings.xml | 6 ++-- .../metadata/android/en-US/changelogs/18.txt | 14 +++++++++ .../metadata/android/ru/changelogs/18.txt | 14 +++++++++ 12 files changed, 90 insertions(+), 52 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/18.txt create mode 100644 fastlane/metadata/android/ru/changelogs/18.txt diff --git a/app/build.gradle b/app/build.gradle index f55d692..20d3136 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "eu.neilalexander.yggdrasil" minSdkVersion 21 targetSdkVersion 33 - versionCode 17 - versionName "0.1-017" + versionCode 18 + versionName "0.1-018" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/DnsActivity.kt b/app/src/main/java/eu/neilalexander/yggdrasil/DnsActivity.kt index 264a335..f3f9ed8 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/DnsActivity.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/DnsActivity.kt @@ -13,6 +13,7 @@ import androidx.preference.PreferenceManager import com.google.android.material.textfield.TextInputEditText const val KEY_DNS_SERVERS = "dns_servers" +const val KEY_DNS_VERSION = "dns_version" const val KEY_ENABLE_CHROME_FIX = "enable_chrome_fix" class DnsActivity : AppCompatActivity() { @@ -41,10 +42,10 @@ class DnsActivity : AppCompatActivity() { val descriptionRevertron = getString(R.string.dns_server_info_revertron) // Here we can add some other DNS servers in a future defaultDnsServers = hashMapOf( - "302:7991::53" to Pair(getString(R.string.location_amsterdam), descriptionRevertron), - "302:db60::53" to Pair(getString(R.string.location_prague), descriptionRevertron), - "300:6223::53" to Pair(getString(R.string.location_bratislava), descriptionRevertron), - "301:1088::53" to Pair(getString(R.string.location_buffalo), descriptionRevertron), + "308:62:45:62::" to Pair(getString(R.string.location_amsterdam), descriptionRevertron), + "308:84:68:55::" to Pair(getString(R.string.location_frankfurt), descriptionRevertron), + "308:25:40:bd::" to Pair(getString(R.string.location_bratislava), descriptionRevertron), + "308:c8:48:45::" to Pair(getString(R.string.location_buffalo), descriptionRevertron), ) serversTableLayout = findViewById(R.id.configuredDnsTableLayout) diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/GlobalApplication.kt b/app/src/main/java/eu/neilalexander/yggdrasil/GlobalApplication.kt index 85f9a09..49a544b 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/GlobalApplication.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/GlobalApplication.kt @@ -8,6 +8,7 @@ import android.os.Build import android.service.quicksettings.TileService import androidx.annotation.RequiresApi import androidx.core.app.NotificationCompat +import androidx.preference.PreferenceManager const val PREF_KEY_ENABLED = "enabled" const val MAIN_CHANNEL_ID = "Yggdrasil Service" @@ -15,7 +16,7 @@ const val MAIN_CHANNEL_ID = "Yggdrasil Service" class GlobalApplication: Application(), YggStateReceiver.StateReceiver { private lateinit var config: ConfigurationProxy private var currentState: State = State.Disabled - var updaterConnections: Int = 0 + private var updaterConnections: Int = 0 override fun onCreate() { super.onCreate() @@ -24,6 +25,7 @@ class GlobalApplication: Application(), YggStateReceiver.StateReceiver { callback.register() val receiver = YggStateReceiver(this) receiver.register(this) + migrateDnsServers(this) } fun subscribe() { @@ -64,6 +66,28 @@ class GlobalApplication: Application(), YggStateReceiver.StateReceiver { } } +fun migrateDnsServers(context: Context) { + val preferences = PreferenceManager.getDefaultSharedPreferences(context) + if (preferences.getInt(KEY_DNS_VERSION, 0) >= 1) { + return + } + val serverString = preferences.getString(KEY_DNS_SERVERS, "") + if (serverString!!.isNotEmpty()) { + // Replacing old Revertron's servers by new ones + val newServers = serverString + .replace("300:6223::53", "308:25:40:bd::") + .replace("302:7991::53", "308:62:45:62::") + .replace("302:db60::53", "308:84:68:55::") + .replace("301:1088::53", "308:c8:48:45::") + val editor = preferences.edit() + editor.putInt(KEY_DNS_VERSION, 1) + if (newServers != serverString) { + editor.putString(KEY_DNS_SERVERS, newServers) + } + editor.apply() + } +} + fun createServiceNotification(context: Context, state: State): Notification { createNotificationChannels(context) diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt b/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt index 106189c..d1cd613 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt @@ -24,7 +24,6 @@ class MainActivity : AppCompatActivity() { private lateinit var enabledLabel: TextView private lateinit var ipAddressLabel: TextView private lateinit var subnetLabel: TextView - private lateinit var treeLengthLabel: TextView private lateinit var peersLabel: TextView private lateinit var peersRow: LinearLayoutCompat private lateinit var dnsLabel: TextView @@ -53,7 +52,6 @@ class MainActivity : AppCompatActivity() { enabledLabel = findViewById(R.id.yggdrasilStatusLabel) ipAddressLabel = findViewById(R.id.ipAddressValue) subnetLabel = findViewById(R.id.subnetValue) - treeLengthLabel = findViewById(R.id.treeLengthValue) peersLabel = findViewById(R.id.peersValue) peersRow = findViewById(R.id.peersTableRow) dnsLabel = findViewById(R.id.dnsValue) @@ -175,7 +173,6 @@ class MainActivity : AppCompatActivity() { } ipAddressLabel.text = intent.getStringExtra("ip") ?: "N/A" subnetLabel.text = intent.getStringExtra("subnet") ?: "N/A" - treeLengthLabel.text = intent.getStringExtra("coords") ?: "0" if (intent.hasExtra("peers")) { val peerState = JSONArray(intent.getStringExtra("peers") ?: "[]") peersLabel.text = when (val count = peerState.length()) { diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/PacketTunnelProvider.kt b/app/src/main/java/eu/neilalexander/yggdrasil/PacketTunnelProvider.kt index 7259e80..c5519f6 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/PacketTunnelProvider.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/PacketTunnelProvider.kt @@ -236,11 +236,6 @@ open class PacketTunnelProvider: VpnService() { var lastStateUpdate = System.currentTimeMillis() updates@ while (started.get()) { val treeJSON = yggdrasil.treeJSON - var treeLength = 0 - if (treeJSON != null && treeJSON != "null") { - val treeState = JSONArray(treeJSON) - treeLength = treeState.length() - } if ((application as GlobalApplication).needUiUpdates()) { val intent = Intent(STATE_INTENT) intent.putExtra("type", "state") @@ -248,9 +243,7 @@ open class PacketTunnelProvider: VpnService() { intent.putExtra("ip", yggdrasil.addressString) intent.putExtra("subnet", yggdrasil.subnetString) intent.putExtra("pubkey", yggdrasil.publicKeyString) - intent.putExtra("coords", "$treeLength") intent.putExtra("peers", yggdrasil.peersJSON) - intent.putExtra("tree", treeJSON) LocalBroadcastManager.getInstance(this).sendBroadcast(intent) } val curTime = System.currentTimeMillis() diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/PeersActivity.kt b/app/src/main/java/eu/neilalexander/yggdrasil/PeersActivity.kt index 8e67280..030ffa1 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/PeersActivity.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/PeersActivity.kt @@ -7,6 +7,7 @@ import android.content.Intent import android.content.IntentFilter import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.text.method.LinkMovementMethod import android.util.Log import android.view.ContextThemeWrapper import android.view.KeyEvent @@ -47,6 +48,9 @@ class PeersActivity : AppCompatActivity() { configuredTableLayout = findViewById(R.id.configuredPeersTableLayout) configuredTableLabel = findViewById(R.id.configuredPeersLabel) + val discoveryLink = findViewById(R.id.peers_discovery_link) + discoveryLink.movementMethod = LinkMovementMethod.getInstance() + multicastListenSwitch = findViewById(R.id.enableMulticastListen) multicastListenSwitch.setOnCheckedChangeListener { button, _ -> config.multicastListen = button.isChecked diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a974a99..9261130 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -116,7 +116,7 @@ android:layout_height="32px" /> @@ -203,32 +203,6 @@ - - - - - - - + + diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 35be1ee..ba34ea4 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -42,11 +42,10 @@ Сброс Состояние Включить Yggdrasil - Статистика + Адрес и сеть Н/Д Адрес Подсеть - Высота дерева Конфигурация Пиры Серверы DNS @@ -58,6 +57,7 @@ Находимый через multicast Искать пиров через multicast Yggdrasil будет пытаться подключаться к этим пирам автоматически. Если вы добавите несколько пиров, ваше устройство может быть использовано для переноса данных между другими узлами сети. Чтобы этого избежать настройте только один пир. + Вы можете найти публичные пиры по этой ссылке. Пиры могут быть найдены с помощью Multicast если они находятся в той же Wi-Fi сети, либо через USB. У них должен быть одинаковый пароль. Трафик в мобильной сети может быть платным. Вы можете отключить мобильные данные в настройках устройства. Пароль Об узле @@ -73,9 +73,9 @@ Включено (Нет подключения) Подключено Амстердам, Нидерланды - Прага, Чехия + Франкфурт, Германия Братислава, Словакия - Баффало, США + Буффало, США Сервис VPN Главный канал нотификаций сервиса Нажмите здесь чтобы включить Yggdrasil. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7bf2dac..f886f02 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -42,11 +42,10 @@ Reset Status Enable Yggdrasil - Statistics + Network info N/A IP Subnet - Tree length Configuration Peers DNS servers @@ -58,6 +57,7 @@ Discoverable over multicast Search for multicast peers Yggdrasil will automatically attempt to connect to configured peers when started. If you configure more than one peer, your device may carry traffic on behalf of other network nodes. Avoid this by configuring only a single peer. + You can find public peers by opening this link. Multicast peers will be discovered on the same Wi-Fi network or via USB. They must have the same password. Data charges may apply when using mobile data. You can prevent data usage in the device settings. Password Node Info @@ -73,7 +73,7 @@ Enabled (No connectivity) Connected Amsterdam, NL - Prague, CZ + Frankfurt, DE Bratislava, SK Buffalo, US VPN Service diff --git a/fastlane/metadata/android/en-US/changelogs/18.txt b/fastlane/metadata/android/en-US/changelogs/18.txt new file mode 100644 index 0000000..7c13f7b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/18.txt @@ -0,0 +1,14 @@ +Updated core library to 0.5.7, presenting these changes: + +Added +WebSocket support for peerings, by using the new ws:// scheme in Listen and Peers +Additionally, the wss:// scheme can be used to connect to a WebSocket peer behind a HTTPS reverse proxy + +Changed +On Linux, the TUN adapter now uses vectorised reads/writes where possible, which should reduce the amount of CPU time spent on syscalls and potentially improve throughput +Link error handling has been improved and various link error messages have been rewritten to be clearer +Upgrade dependencies + +Fixed +Multiple multicast connections to the same remote machine should now work correctly +You may get two connections in some cases, one inbound and one outbound, this is known and will not cause problems diff --git a/fastlane/metadata/android/ru/changelogs/18.txt b/fastlane/metadata/android/ru/changelogs/18.txt new file mode 100644 index 0000000..fe1c795 --- /dev/null +++ b/fastlane/metadata/android/ru/changelogs/18.txt @@ -0,0 +1,14 @@ +Обновлена основная библиотека до версии 0.5.7, в которой представлены следующие изменения: + +Добавлено +Поддержка WebSocket для пиринга с использованием новой схемы ws:// в Listen и Peers +Кроме того, схему wss:// можно использовать для подключения к узлам WebSocket за обратным прокси-сервером HTTPS вроде Nginx + +Изменено +В Linux адаптер TUN теперь использует векторизованную чтение/запись, где это возможно, что должно сократить количество времени ЦП, затрачиваемого на системные вызовы, и потенциально повысить пропускную способность +Улучшена обработка ошибок соединения, а различные сообщения об ошибках соединения были переписаны для большей ясности +Обновление зависимостей + +Исправлено +Несколько мультикаст подключений к одной и той же удаленной машине теперь должны работать правильно +В некоторых случаях вы можете получить два подключения, одно входящее и одно исходящее, это известное поведение и не вызовет проблем \ No newline at end of file