Support fido:/ URIs
Recognize spec-style fido:/ URIs and open them with ACTION_VIEW. Note that FIDO:// URIs already worked before this just fine.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package de.markusfisch.android.binaryeye.actions
|
||||
|
||||
import de.markusfisch.android.binaryeye.actions.fido.FidoAction
|
||||
import de.markusfisch.android.binaryeye.actions.mail.MailAction
|
||||
import de.markusfisch.android.binaryeye.actions.mail.MatMsgAction
|
||||
import de.markusfisch.android.binaryeye.actions.otpauth.OtpauthAction
|
||||
@@ -17,6 +18,7 @@ object ActionRegistry {
|
||||
private val REGISTRY: Set<Action> = setOf(
|
||||
MailAction,
|
||||
MatMsgAction,
|
||||
FidoAction,
|
||||
OtpauthAction,
|
||||
SmsAction,
|
||||
TelAction,
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package de.markusfisch.android.binaryeye.actions.fido
|
||||
|
||||
import android.content.Context
|
||||
import de.markusfisch.android.binaryeye.R
|
||||
import de.markusfisch.android.binaryeye.actions.Action
|
||||
import de.markusfisch.android.binaryeye.content.openUrl
|
||||
|
||||
object FidoAction : Action() {
|
||||
private val fidoUriRegex = "^fido:/[0-9]+$".toRegex(
|
||||
RegexOption.IGNORE_CASE
|
||||
)
|
||||
|
||||
override val iconResId: Int = R.drawable.ic_action_open
|
||||
override val titleResId: Int = R.string.open_url
|
||||
|
||||
override fun canExecuteOn(data: ByteArray): Boolean {
|
||||
return String(data).trim().matches(fidoUriRegex)
|
||||
}
|
||||
|
||||
override suspend fun execute(context: Context, data: ByteArray) {
|
||||
executed = context.openUrl(String(data).trim())
|
||||
}
|
||||
}
|
||||
@@ -924,7 +924,7 @@ class Preferences {
|
||||
private const val PREVIEW_SCALE = "preview_scale"
|
||||
private const val AUTOMATED_ACTIONS = "automated_actions"
|
||||
private const val DYNAMIC_COLORS = "dynamic_colors"
|
||||
private const val DEFAULT_IGNORE_CODE_PATTERN = "^FIDO://.*"
|
||||
private const val DEFAULT_IGNORE_CODE_PATTERN = "(?i)^fido:/.*"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Přidat kód</string>
|
||||
<string name="ignore_code_edit">Upravit kód</string>
|
||||
<string name="ignore_code_regex_hint">např. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">např. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Vyžadován regulární výraz</string>
|
||||
<string name="ignore_code_regex_invalid">Neplatný regulární výraz</string>
|
||||
<string name="ignore_code_remove_confirm">Odstranit tento ignorovaný kód?</string>
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Code hinzufügen</string>
|
||||
<string name="ignore_code_edit">Code bearbeiten</string>
|
||||
<string name="ignore_code_regex_hint">z.B. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">z.B. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex erforderlich</string>
|
||||
<string name="ignore_code_regex_invalid">Ungültiger Regex</string>
|
||||
<string name="ignore_code_remove_confirm">Diesen ignorierten Code entfernen?</string>
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Ajouter un code</string>
|
||||
<string name="ignore_code_edit">Modifier le code</string>
|
||||
<string name="ignore_code_regex_hint">p. ex. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">p. ex. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Expression régulière requise</string>
|
||||
<string name="ignore_code_regex_invalid">Expression régulière invalide</string>
|
||||
<string name="ignore_code_remove_confirm">Supprimer ce code ignoré ?</string>
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Aggiungi codice</string>
|
||||
<string name="ignore_code_edit">Modifica codice</string>
|
||||
<string name="ignore_code_regex_hint">es. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">es. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Richeisto regex</string>
|
||||
<string name="ignore_code_regex_invalid">Regex non valido</string>
|
||||
<string name="ignore_code_remove_confirm">Vuoi rimuovere questo codice ignorato?</string>
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<string name="profile_current">Pašreizējais profils</string>
|
||||
<string name="current_profile">Profils: %s</string>
|
||||
<string name="barcode_formats">Svītrkoda formāti</string>
|
||||
<string name="ignore_code_regex_hint">piem. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">piem. (?i)^fido:/.*</string>
|
||||
<string name="open_immediately">Nekavējoties atvērt saturu</string>
|
||||
<string name="show_meta_data">Rādīt metadatus</string>
|
||||
<string name="show_checksum">Rādīt kontrolsummu</string>
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Добавить код</string>
|
||||
<string name="ignore_code_edit">Изменить код</string>
|
||||
<string name="ignore_code_regex_hint">например ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">например (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Требуется регулярное выражение</string>
|
||||
<string name="ignore_code_regex_invalid">Недействительное регулярное выражение</string>
|
||||
<string name="ignore_code_remove_confirm">Удалить этот игнорируемый код?</string>
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Додати код</string>
|
||||
<string name="ignore_code_edit">Редагувати код</string>
|
||||
<string name="ignore_code_regex_hint">наприклад ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">наприклад (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Потрібен регулярний вираз</string>
|
||||
<string name="ignore_code_regex_invalid">Недійсний регулярний вираз</string>
|
||||
<string name="ignore_code_remove_confirm">Видалити цей проігнорований код?</string>
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
</plurals>
|
||||
<string name="ignore_code_add">Add code</string>
|
||||
<string name="ignore_code_edit">Edit code</string>
|
||||
<string name="ignore_code_regex_hint">e.g. ^FIDO://.*</string>
|
||||
<string name="ignore_code_regex_hint">e.g. (?i)^fido:/.*</string>
|
||||
<string name="ignore_code_regex_required">Regex required</string>
|
||||
<string name="ignore_code_regex_invalid">Invalid regex</string>
|
||||
<string name="ignore_code_remove_confirm">Remove this ignored code?</string>
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package de.markusfisch.android.binaryeye.actions.fido
|
||||
|
||||
import junit.framework.TestCase.assertEquals
|
||||
import org.junit.Test
|
||||
|
||||
class FidoTest {
|
||||
@Test
|
||||
fun correct() {
|
||||
val urls = listOf(
|
||||
"fido:/1234567890",
|
||||
"FIDO:/1234567890",
|
||||
)
|
||||
for (url in urls) {
|
||||
assertEquals(url, resolve(url))
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun incorrect() {
|
||||
val urls = listOf(
|
||||
"",
|
||||
"fido:",
|
||||
"fido:/",
|
||||
"fido://1234567890",
|
||||
"fido:/abc",
|
||||
"fido:/123abc",
|
||||
"https://example.com",
|
||||
)
|
||||
for (url in urls) {
|
||||
assertEquals(null, resolve(url))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun resolve(s: String) = if (
|
||||
FidoAction.canExecuteOn(s.toByteArray())
|
||||
) s else null
|
||||
Reference in New Issue
Block a user