Add check for potential issues with SSH URL

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2020-09-19 17:28:08 +05:30
parent 5d5a068591
commit e8e0cc791f
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
3 changed files with 22 additions and 0 deletions

View file

@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file.
- Add ability to view the Git commit log - Add ability to view the Git commit log
- Allow generating ECDSA and ED25519 keys for SSH - Allow generating ECDSA and ED25519 keys for SSH
- Add support for multiple/fallback authentication methods for SSH - Add support for multiple/fallback authentication methods for SSH
- Add warning when the custom SSH port in a URL could potentially be ignored
### Changed ### Changed

View file

@ -25,6 +25,7 @@ import com.zeapo.pwdstore.databinding.ActivityGitCloneBinding
import com.zeapo.pwdstore.git.config.AuthMode import com.zeapo.pwdstore.git.config.AuthMode
import com.zeapo.pwdstore.git.config.GitSettings import com.zeapo.pwdstore.git.config.GitSettings
import com.zeapo.pwdstore.git.config.Protocol import com.zeapo.pwdstore.git.config.Protocol
import com.zeapo.pwdstore.ui.dialogs.BasicBottomSheet
import com.zeapo.pwdstore.utils.PasswordRepository import com.zeapo.pwdstore.utils.PasswordRepository
import com.zeapo.pwdstore.utils.snackbar import com.zeapo.pwdstore.utils.snackbar
import com.zeapo.pwdstore.utils.viewBinding import com.zeapo.pwdstore.utils.viewBinding
@ -87,6 +88,22 @@ class GitServerConfigActivity : BaseGitActivity() {
} }
binding.saveButton.setOnClickListener { binding.saveButton.setOnClickListener {
val newUrl = binding.serverUrl.text.toString().trim()
// If url is of type john_doe@example.org:12435/path/to/repo, then not adding `ssh://`
// in the beginning will cause the port to be seen as part of the path. Let users know
// about it and offer a quickfix.
if (newUrl.contains(":[0-9]{1,5}/".toRegex()) && !newUrl.startsWith("ssh://")) {
BasicBottomSheet.Builder(this)
.setTitleRes(R.string.ssh_scheme_needed_title)
.setMessageRes(R.string.ssh_scheme_needed_message)
.setPositiveButtonClickListener {
@Suppress("SetTextI18n")
binding.serverUrl.setText("ssh://$newUrl")
}
.build()
.show(supportFragmentManager, "SSH_SCHEME_WARNING")
return@setOnClickListener
}
when (val updateResult = GitSettings.updateConnectionSettingsIfValid( when (val updateResult = GitSettings.updateConnectionSettingsIfValid(
newAuthMode = newAuthMode, newAuthMode = newAuthMode,
newUrl = binding.serverUrl.text.toString().trim(), newUrl = binding.serverUrl.text.toString().trim(),

View file

@ -436,4 +436,8 @@
<string name="err_enter_store_name">Enter a store name to continue</string> <string name="err_enter_store_name">Enter a store name to continue</string>
<string name="exception_cannot_create_directory">Cannot create new directory.</string> <string name="exception_cannot_create_directory">Cannot create new directory.</string>
<!-- SSH port validation -->
<string name="ssh_scheme_needed_title">Potentially incorrect URL</string>
<string name="ssh_scheme_needed_message">It appears that your URL contains a custom port, but does not specify the ssh:// scheme.\nThis can cause the port to be considered a part of your path. Press OK here to fix the URL.</string>
</resources> </resources>