diff --git a/SparkleLib/SparkleFetcherBase.cs b/SparkleLib/SparkleFetcherBase.cs index c22bc2e5..54581049 100755 --- a/SparkleLib/SparkleFetcherBase.cs +++ b/SparkleLib/SparkleFetcherBase.cs @@ -133,10 +133,10 @@ namespace SparkleLib { if (RequiredFingerprint != null) { string host_fingerprint = GetFingerprint (host_key); - if (host_fingerprint == null || - !RequiredFingerprint.Equals (host_fingerprint)) { - + if (host_fingerprint == null || !RequiredFingerprint.Equals (host_fingerprint)) { SparkleHelpers.DebugInfo ("Auth", "Fingerprint doesn't match"); + + this.errors.Add ("error: Host fingerprint doesn't match"); Failed (); return; diff --git a/SparkleShare/Mac/SparkleSetup.cs b/SparkleShare/Mac/SparkleSetup.cs index b67e1781..62c80cda 100755 --- a/SparkleShare/Mac/SparkleSetup.cs +++ b/SparkleShare/Mac/SparkleSetup.cs @@ -451,7 +451,7 @@ namespace SparkleShare { if (type == PageType.Syncing) { Header = "Adding project ‘" + Controller.SyncingFolder + "’…"; - Description = "This may take a while on big projects. Isn't it coffee-o'clock?"; + Description = "This may take a while on big projects.\nIsn't it coffee-o'clock?"; ProgressIndicator = new NSProgressIndicator () { @@ -491,7 +491,7 @@ namespace SparkleShare { Buttons.Add (FinishButton); Buttons.Add (CancelButton); } - + if (type == PageType.Error) { Header = "Oops! Something went wrong…"; Description = "Please check the following:"; diff --git a/SparkleShare/SparkleControllerBase.cs b/SparkleShare/SparkleControllerBase.cs index 56b2fd1a..cd5761bb 100644 --- a/SparkleShare/SparkleControllerBase.cs +++ b/SparkleShare/SparkleControllerBase.cs @@ -195,17 +195,21 @@ namespace SparkleShare { if (file_name.EndsWith (".key")) { key_file_path = Path.Combine (keys_path, file_name); SparkleKeys.ImportPrivateKey (key_file_path); + + break; } } if (!string.IsNullOrEmpty (key_file_path)) { - string pubkey_file_path = key_file_path + ".pub"; - string link_code_file_path = Path.Combine (FoldersPath, CurrentUser.Name + "'s link code.txt"); + string public_key_file_path = key_file_path + ".pub"; + string link_code_file_path = Path.Combine (FoldersPath, CurrentUser.Name + "'s link code.txt"); // Create an easily accessible copy of the public // key in the user's SparkleShare folder - if (File.Exists (pubkey_file_path) && !File.Exists (link_code_file_path)) - File.Copy (pubkey_file_path, link_code_file_path, true /* Overwriting allowed */ ); + if (File.Exists (public_key_file_path) && !File.Exists (link_code_file_path)) + File.Copy (public_key_file_path, link_code_file_path, true); + + CurrentUser.PublicKey = File.ReadAllText (public_key_file_path); } SparkleKeys.ListPrivateKeys (); diff --git a/SparkleShare/SparkleInvite.cs b/SparkleShare/SparkleInvite.cs index ee4ff3f6..bad2cc7c 100644 --- a/SparkleShare/SparkleInvite.cs +++ b/SparkleShare/SparkleInvite.cs @@ -79,40 +79,42 @@ namespace SparkleShare { } - public bool Accept () + public bool Accept (string public_key) { if (string.IsNullOrEmpty (AcceptUrl)) return true; + string post_data = "public_key=" + public_key; + byte [] post_bytes = Encoding.UTF8.GetBytes (post_data); + + WebRequest request = WebRequest.Create (AcceptUrl); + + request.Method = "POST"; + request.ContentType = "application/x-www-form-urlencoded"; + request.ContentLength = post_bytes.Length; + + Stream data_stream = request.GetRequestStream (); + data_stream.Write (post_bytes, 0, post_bytes.Length); + data_stream.Close (); + + HttpWebResponse response = null; + try { - WebRequest request = WebRequest.Create (AcceptUrl); - - request.Method = "POST"; - request.ContentType = "application/x-www-form-urlencoded"; - string post_data = "pubkey=" + SparkleConfig.DefaultConfig.User.PublicKey; - byte [] post_bytes = Encoding.UTF8.GetBytes (post_data); - request.ContentLength = post_bytes.Length; - - Stream data_stream = request.GetRequestStream (); - data_stream.Write (post_bytes, 0, post_bytes.Length); - data_stream.Close (); - - WebResponse response = request.GetResponse (); + response = (HttpWebResponse) request.GetResponse (); response.Close (); - if ((response as HttpWebResponse).StatusCode == HttpStatusCode.OK) { - SparkleHelpers.DebugInfo ("Invite", "Uploaded public key to " + AcceptUrl); - return true; - - } else { - SparkleHelpers.DebugInfo ("Invite", "Failed uploading public key to " + AcceptUrl); - return false; - } - } catch (WebException e) { SparkleHelpers.DebugInfo ("Invite", "Failed uploading public key to " + AcceptUrl + ": " + e.Message); return false; } + + if (response != null && response.StatusCode == HttpStatusCode.OK) { + SparkleHelpers.DebugInfo ("Invite", "Uploaded public key to " + AcceptUrl); + return true; + + } else { + return false; + } } diff --git a/SparkleShare/SparkleSetupController.cs b/SparkleShare/SparkleSetupController.cs index 29a83eb8..e0bced2a 100755 --- a/SparkleShare/SparkleSetupController.cs +++ b/SparkleShare/SparkleSetupController.cs @@ -382,8 +382,7 @@ namespace SparkleShare { try { string address = remote_url.Replace (uri.AbsolutePath, ""); - new_plugin = SparklePlugin.Create ( - uri.Host, address, address, "", "", "/path/to/project"); + new_plugin = SparklePlugin.Create (uri.Host, address, address, "", "", "/path/to/project"); if (new_plugin != null) { Plugins.Insert (1, new_plugin); @@ -430,8 +429,11 @@ namespace SparkleShare { ChangePageEvent (PageType.Syncing, null); new Thread (() => { - if (!PendingInvite.Accept ()) { - ChangePageEvent (PageType.Error, null); + if (!PendingInvite.Accept (Program.Controller.CurrentUser.PublicKey)) { + PreviousUrl = PendingInvite.Address + + PendingInvite.RemotePath.TrimStart ("/".ToCharArray ()); + + ChangePageEvent (PageType.Error, new string [] { "error: Failed to upload the public key" }); return; }