diff options
Diffstat (limited to 'app/src/main/java')
-rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt b/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt index 3421e6a8..591a8581 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt @@ -95,24 +95,29 @@ abstract class BaseGitActivity : AppCompatActivity() { val previousUrl = url ?: "" // Whether we need the leading ssh:// depends on the use of a custom port. val hostnamePart = serverHostname.removePrefix("ssh://") - // We only support relative paths and trim everything scheme-specific. - val pathPart = serverPath.trimStart('/', ':') val newUrl = when (protocol) { Protocol.Ssh -> { val userPart = if (serverUser.isEmpty()) "" else "${serverUser.trimEnd('@')}@" val portPart = if (serverPort == "22" || serverPort.isEmpty()) "" else ":$serverPort" if (portPart.isEmpty()) { + // We only support relative paths with the standard port. + val pathPart = serverPath.trimStart('/', ':') "$userPart$hostnamePart:$pathPart" } else { + // We only support absolute paths with custom ports. + if (!serverPath.startsWith('/')) + return false + val pathPart = serverPath // We have to specify the ssh scheme as this is the only way to pass a custom // port. - "ssh://$userPart$hostnamePart$portPart/$pathPart" + "ssh://$userPart$hostnamePart$portPart$pathPart" } } Protocol.Https -> { val portPart = if (serverPort == "443" || serverPort.isEmpty()) "" else ":$serverPort" + val pathPart = serverPath.trimStart('/', ':') val urlWithFreeEntryScheme = "$hostnamePart$portPart/$pathPart" val url = when { urlWithFreeEntryScheme.startsWith("https://") -> urlWithFreeEntryScheme |