diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/ConfigurationProxy.kt b/app/src/main/java/eu/neilalexander/yggdrasil/ConfigurationProxy.kt index 4af8b3b..1040c60 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/ConfigurationProxy.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/ConfigurationProxy.kt @@ -29,6 +29,14 @@ object ConfigurationProxy { fix() } + fun resetKeys() { + val newJson = JSONObject(String(Mobile.generateConfigJSON())) + updateJSON { json -> + json.put("PrivateKey", newJson.getString("PrivateKey")) + json.put("PublicKey", newJson.getString("PublicKey")) + } + } + fun updateJSON(fn: (JSONObject) -> Unit) { json = JSONObject(file.readText(Charsets.UTF_8)) fn(json) diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/SettingsActivity.kt b/app/src/main/java/eu/neilalexander/yggdrasil/SettingsActivity.kt index 11f9b32..c7d6b0a 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/SettingsActivity.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/SettingsActivity.kt @@ -7,6 +7,7 @@ import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.ContextThemeWrapper import android.view.LayoutInflater +import android.view.View import android.widget.* import androidx.core.widget.doOnTextChanged import org.json.JSONObject @@ -32,8 +33,8 @@ class SettingsActivity : AppCompatActivity() { deviceNameEntry.doOnTextChanged { text, _, _, _ -> config.updateJSON { cfg -> - val nodeinfo = cfg.optJSONObject("NodeInfo") - if (nodeinfo == null) { + val nodeInfo = cfg.optJSONObject("NodeInfo") + if (nodeInfo == null) { cfg.put("NodeInfo", JSONObject("{}")) } cfg.getJSONObject("NodeInfo").put("name", text) @@ -56,6 +57,11 @@ class SettingsActivity : AppCompatActivity() { builder.show() } + findViewById(R.id.resetKeysRow).setOnClickListener { + config.resetKeys() + updateView() + } + publicKeyLabel.setOnLongClickListener { val clipboard: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager val clip = ClipData.newPlainText("public key", publicKeyLabel.text) diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 6db6929..89bdbe3 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -234,6 +234,16 @@ android:paddingBottom="2pt" android:showDividers="middle"> + + + + + diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 29f00ea..85226ce 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -64,6 +64,7 @@ Эта информация публична и может появиться на картах сети. Публичный ключ Ваш публичный ключ идентифицирует вас в сети. Его распространение безопасно. + Сбросить ключи (и адрес IP) Сбросить настройки Сброс создаст полностью новые настройки. Это изменит ваш публичный ключ и адрес IP. Выключено diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a6d0538..bf571d7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -64,6 +64,7 @@ Information entered here is public and may be shown on network maps. Public Key Your public key forms your identity on the network. It is safe to be shared. + Reset keys (and IP-address) Reset configuration Resetting will overwrite with newly generated configuration. Your public keys and IP address on the network will change. Disabled