fix: accept host:port in dictionary source URLs
URL validation rejected any host containing a colon, so sources on non-standard ports could not be added. Strip the optional :port from the host before applying the domain checks and validate the port range (1-65535); the port is kept intact through template normalization and URL building.
This commit is contained in:
1 parent
638e886498
commit
eb918ca09f
1 file changed
+9
-2
@@ -132,8 +132,15 @@ data class DictionarySource(
|
|||||||
val parts = afterProtocol.split("/")
|
val parts = afterProtocol.split("/")
|
||||||
if (parts.size < 2) return false
|
if (parts.size < 2) return false
|
||||||
|
|
||||||
val domain = parts[0]
|
val hostWithPort = parts[0]
|
||||||
if (domain.isEmpty()) return false
|
if (hostWithPort.isEmpty()) return false
|
||||||
|
|
||||||
|
val colonIndex = hostWithPort.lastIndexOf(':')
|
||||||
|
if (colonIndex >= 0) {
|
||||||
|
val port = hostWithPort.substring(colonIndex + 1).toIntOrNull()
|
||||||
|
if (port == null || port !in 1..65535) return false
|
||||||
|
}
|
||||||
|
val domain = if (colonIndex >= 0) hostWithPort.substring(0, colonIndex) else hostWithPort
|
||||||
if (domain != "localhost" && !domain.contains(".")) return false
|
if (domain != "localhost" && !domain.contains(".")) return false
|
||||||
|
|
||||||
val filename = parts.last()
|
val filename = parts.last()
|
||||||
|
|||||||
Reference in new issue
Block a user