fix bugs of ssh key authentication method
This commit is contained in:
parent
6f7d62dc60
commit
07da510ccb
4 changed files with 18 additions and 6 deletions
|
|
@ -12,5 +12,7 @@ class Globals {
|
||||||
static let shared = Globals()
|
static let shared = Globals()
|
||||||
let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0];
|
let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0];
|
||||||
let secringPath = "\(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])/secring.gpg"
|
let secringPath = "\(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])/secring.gpg"
|
||||||
|
let sshPublicKeyPath = URL(fileURLWithPath: "\(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])/ssh_key.pub")
|
||||||
|
let sshPrivateKeyPath = URL(fileURLWithPath: "\(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])/ssh_key")
|
||||||
private init() { }
|
private init() { }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ struct GitCredential {
|
||||||
print("username \(userName), password \(password)")
|
print("username \(userName), password \(password)")
|
||||||
credential = try? GTCredential(userName: userName, password: password)
|
credential = try? GTCredential(userName: userName, password: password)
|
||||||
case let .ssh(userName, password, publicKeyFile, privateKeyFile):
|
case let .ssh(userName, password, publicKeyFile, privateKeyFile):
|
||||||
|
print("username \(userName), password \(password), publicKeyFile \(publicKeyFile), privateKeyFile \(privateKeyFile)")
|
||||||
credential = try? GTCredential(userName: userName, publicKeyURL: publicKeyFile, privateKeyURL: privateKeyFile, passphrase: password)
|
credential = try? GTCredential(userName: userName, publicKeyURL: publicKeyFile, privateKeyURL: privateKeyFile, passphrase: password)
|
||||||
}
|
}
|
||||||
return credential ?? GTCredential()
|
return credential ?? GTCredential()
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,14 @@ class SSHKeySettingTableViewController: UITableViewController {
|
||||||
Defaults[.gitRepositorySSHPublicKeyURL] = URL(string: publicKeyURLTextField.text!)
|
Defaults[.gitRepositorySSHPublicKeyURL] = URL(string: publicKeyURLTextField.text!)
|
||||||
Defaults[.gitRepositorySSHPrivateKeyURL] = URL(string: privateKeyURLTextField.text!)
|
Defaults[.gitRepositorySSHPrivateKeyURL] = URL(string: privateKeyURLTextField.text!)
|
||||||
Defaults[.gitRepositorySSHPrivateKeyPassphrase] = passphraseTextField.text!
|
Defaults[.gitRepositorySSHPrivateKeyPassphrase] = passphraseTextField.text!
|
||||||
|
|
||||||
|
do {
|
||||||
|
try Data(contentsOf: Defaults[.gitRepositorySSHPublicKeyURL]!).write(to: Globals.shared.sshPublicKeyPath, options: .atomic)
|
||||||
|
try Data(contentsOf: Defaults[.gitRepositorySSHPrivateKeyURL]!).write(to: Globals.shared.sshPrivateKeyPath, options: .atomic)
|
||||||
|
} catch {
|
||||||
|
print(error)
|
||||||
|
}
|
||||||
|
|
||||||
navigationController!.popViewController(animated: true)
|
navigationController!.popViewController(animated: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,19 +26,15 @@ class SettingsTableViewController: UITableViewController {
|
||||||
let auth = controller.authenticationMethod
|
let auth = controller.authenticationMethod
|
||||||
|
|
||||||
|
|
||||||
Defaults[.gitRepositoryURL] = URL(string: gitRepostiroyURL)
|
|
||||||
Defaults[.gitRepositoryUsername] = username
|
|
||||||
Defaults[.gitRepositoryPassword] = password
|
|
||||||
Defaults[.gitRepositoryAuthenticationMethod] = auth
|
|
||||||
|
|
||||||
if Defaults[.gitRepositoryURL] == nil || gitRepostiroyURL != Defaults[.gitRepositoryURL]!.absoluteString {
|
if Defaults[.gitRepositoryURL] == nil || gitRepostiroyURL != Defaults[.gitRepositoryURL]!.absoluteString {
|
||||||
SVProgressHUD.setDefaultMaskType(.black)
|
SVProgressHUD.setDefaultMaskType(.black)
|
||||||
SVProgressHUD.show(withStatus: "Prepare Repository")
|
SVProgressHUD.show(withStatus: "Prepare Repository")
|
||||||
var gitCredential: GitCredential
|
var gitCredential: GitCredential
|
||||||
if Defaults[.gitRepositoryAuthenticationMethod] == "Password" {
|
if password == "Password" {
|
||||||
gitCredential = GitCredential(credential: GitCredential.Credential.http(userName: username, password: password))
|
gitCredential = GitCredential(credential: GitCredential.Credential.http(userName: username, password: password))
|
||||||
} else {
|
} else {
|
||||||
gitCredential = GitCredential(credential: GitCredential.Credential.ssh(userName: username, password: Defaults[.gitRepositorySSHPrivateKeyPassphrase]!, publicKeyFile: Defaults[.gitRepositorySSHPublicKeyURL]!, privateKeyFile: Defaults[.gitRepositorySSHPrivateKeyURL]!))
|
gitCredential = GitCredential(credential: GitCredential.Credential.ssh(userName: username, password: Defaults[.gitRepositorySSHPrivateKeyPassphrase]!, publicKeyFile: Globals.shared.sshPublicKeyPath, privateKeyFile: Globals.shared.sshPrivateKeyPath))
|
||||||
}
|
}
|
||||||
|
|
||||||
DispatchQueue.global(qos: .userInitiated).async {
|
DispatchQueue.global(qos: .userInitiated).async {
|
||||||
|
|
@ -60,6 +56,11 @@ class SettingsTableViewController: UITableViewController {
|
||||||
SVProgressHUD.showSuccess(withStatus: "Done")
|
SVProgressHUD.showSuccess(withStatus: "Done")
|
||||||
SVProgressHUD.dismiss(withDelay: 1)
|
SVProgressHUD.dismiss(withDelay: 1)
|
||||||
|
|
||||||
|
Defaults[.gitRepositoryURL] = URL(string: gitRepostiroyURL)
|
||||||
|
Defaults[.gitRepositoryUsername] = username
|
||||||
|
Defaults[.gitRepositoryPassword] = password
|
||||||
|
Defaults[.gitRepositoryAuthenticationMethod] = auth
|
||||||
|
|
||||||
NotificationCenter.default.post(Notification(name: Notification.Name("passwordUpdated")))
|
NotificationCenter.default.post(Notification(name: Notification.Name("passwordUpdated")))
|
||||||
} else {
|
} else {
|
||||||
SVProgressHUD.showError(withStatus: "Error")
|
SVProgressHUD.showError(withStatus: "Error")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue