public void ValidFilters() { Assert.IsTrue(Affiliate.IsValidFilter("stackoverflow.com")); Assert.IsTrue(Affiliate.IsValidFilter("meta.stackoverflow.com")); Assert.IsTrue(Affiliate.IsValidFilter("*.stackoverflow.com")); Assert.IsTrue(Affiliate.IsValidFilter("meta.*.stackexchange.com")); }
public void InvalidFilters() { Assert.IsFalse(Affiliate.IsValidFilter("stackoverflow.*.com")); Assert.IsFalse(Affiliate.IsValidFilter("*")); Assert.IsFalse(Affiliate.IsValidFilter(".stackoverflow.com")); Assert.IsFalse(Affiliate.IsValidFilter("hello world")); Assert.IsFalse(Affiliate.IsValidFilter("stackoverflow.*")); }
public ActionResult CreateAffiliate(string filter) { if (!Affiliate.IsValidFilter(filter)) { return(RecoverableError("Invalid host filter", new { filter })); } var c = new RSACryptoServiceProvider(); var key = c.ExportParameters(true); // meeeh... it would be nice if there were a way to *fix* the exponent. May just need to store it... for (int i = 0; i < key.Exponent.Length; i++) { if (key.Exponent[i] != Affiliate.FixedExponent[i]) { throw new Exception("Exponent not as expected!"); } } var modulus = Convert.ToBase64String(key.Modulus); var now = Current.Now; var newAffiliate = new Affiliate { CreationDate = now, HostFilter = filter, OwnerUserId = Current.LoggedInUser.Id, VerificationModulus = modulus }; Current.LoggedInUser.LastActivityDate = now; Current.WriteDB.Affiliates.InsertOnSubmit(newAffiliate); Current.WriteDB.SubmitChanges(); // This is your key, don't lose it! var jsonKey = Json( new { D = Convert.ToBase64String(key.D), DP = Convert.ToBase64String(key.DP), DQ = Convert.ToBase64String(key.DQ), InverseQ = Convert.ToBase64String(key.InverseQ), Modulus = Convert.ToBase64String(key.Modulus), P = Convert.ToBase64String(key.P), Q = Convert.ToBase64String(key.Q) }); var success = Current.Email.SendEmail( Current.LoggedInUser.Email, Email.Template.AffiliateRegistered, new { D = Convert.ToBase64String(key.D), DP = Convert.ToBase64String(key.DP), DQ = Convert.ToBase64String(key.DQ), InverseQ = Convert.ToBase64String(key.InverseQ), Modulus = Convert.ToBase64String(key.Modulus), P = Convert.ToBase64String(key.P), Q = Convert.ToBase64String(key.Q), Id = newAffiliate.Id, Host = newAffiliate.HostFilter }); if (!success) { return(IrrecoverableError("An error occurred sending the email", "This has been recorded, and will be looked into shortly")); } return(jsonKey); }