ログインダイアログでIDNドメインを指定できる

This commit is contained in:
tateisu 2023-02-18 01:18:18 +09:00
parent 587b505ae2
commit 767f0620a6
2 changed files with 7 additions and 4 deletions

View File

@ -45,7 +45,11 @@ class Host private constructor(
val cached = hostSet[srcArg]
if (cached != null) return cached
val src = srcArg.removeUrlSchema()
val ascii = IDN.toASCII(src, IDN.ALLOW_UNASSIGNED).lowercase()
val ascii = if( """[^A-Za-z0-9._-]""".toRegex().find(src)!=null){
IDN.toASCII(src, IDN.ALLOW_UNASSIGNED).lowercase()
}else{
IDN.toASCII(src, IDN.ALLOW_UNASSIGNED).lowercase()
}
val pretty = IDN.toUnicode(src, IDN.ALLOW_UNASSIGNED)
val host = if (ascii == pretty) Host(ascii) else Host(ascii, pretty)
hostSet[src] = host

View File

@ -40,7 +40,7 @@ class LoginForm(
private val log = LogCategory("LoginForm")
@Suppress("RegExpSimplifiable")
val reBadLetter = """[^A-Za-z0-9:;._-]+""".toRegex()
val reBadChars = """([^\p{L}\p{N}A-Za-z0-9:;._-]+)""".toRegex()
fun AppCompatActivity.showLoginForm(
onClickOk: (
@ -192,8 +192,7 @@ class LoginForm(
return null
}
//
reBadLetter.findAll(s).joinToString("") { it.value }.notEmpty()?.let {
reBadChars.findAll(s).joinToString("") { it.value }.notEmpty()?.let {
showError(activity.getString(R.string.server_host_name_cant_contains_it, it))
return null
}