public async Task <IActionResult> DeployContract(DeployContractVM contractVM) { try { ContractParam contractParam = new ContractParam(contractVM); ContractAccess contractAccess = new ContractAccess((int)contractVM.Network); var transactionHash = await contractAccess.DeployContract(contractParam); Escrow newContract = new Escrow(transactionHash.ToString(), contractVM); using (var _context = new ApplicationDbContext()) { _context.DeployedContracts.Add(newContract); await _context.SaveChangesAsync(); //contractVM.ContractList = await _context.DeployedContracts.Include(p => p.Receipt).ToListAsync(); } Log.Information("Contract Deployed at network: " + contractVM.Network.ToString() + ", TxHash: " + transactionHash); return(new JsonResult(transactionHash)); } catch (Exception e) { return(new JsonResult(e.Message)); } }
public ActionResult Index(int id, string addr, decimal amount) { if (Request.IsLocal) { EscrowAccept escrowaccept = data.EscrowAccepts.GetByID(id); Escrow escrow = escrowaccept.Escrow.FirstOrDefault(); if (escrow != null && escrowaccept.EscrowAddress == addr && escrow != null) { escrowaccept.LastAddressBalance = escrowaccept.LastAddressBalance.HasValue ? escrowaccept.LastAddressBalance.Value + amount : amount; data.Save(); Price total = escrow.GetTotal(); decimal balance = (total.BTC - amount); string direction = balance >= 0 ? "<p>Looks like the payment was a little short. Try contacting the buyer and asking them to send the difference. If you cannot come to a resolution, contact support</p>" : "<p>The buyer's balance has been paid, now it's time for you to fill the order!</p>"; string emailBodyText = "<p>The user <a href=\"mailto:" + escrow.UserBuyer.Email + "\">" + escrow.UserBuyer.UserName + "</a> has sent " + amount.FormatNumber() + " BTC to the escrow address for item:</p>" + "<p><i>" + escrow.Listing.Title + "</p></i><br/>" + "<p>Total: " + total.BTC.FormatNumber() + " BTC</p>" + "<p>Paid: " + amount.FormatNumber() + " BTC</p>" + "<p><b>Balance: " + (total.BTC - amount).FormatNumber() + " BTC</b></p><br/>" + direction + "<p>Click <a href=\"" + Url.Action("view", "escrow", new { id = escrow.EscrowId.StringWithoutDashes() }, Request.Url.Scheme) + "\">here</a> to view this transaction</p><br/>"; Globals.SendEmail(escrow.UserSeller.Email, "You've received " + amount.FormatNumber() + " BTC!", emailBodyText); return(Content("Dispatched email to " + escrow.UserBuyer.Email)); } else { return(Content("Bitcoin address does not match!")); } } else { return(Content("Unauthorized")); } }
public ActionResult Delete(string id) { Guid guid; if (!Guid.TryParse(id, out guid)) { return(RedirectToAction("notfound", "error")); } Escrow es = data.Escrows.GetByID(guid); if ((EscrowState)es.State == EscrowState.Closed) { EscrowClosedBy closedby = (EscrowClosedBy)es.ClosedBy.Value; if (closedby == EscrowClosedBy.BuyerCancel || closedby == EscrowClosedBy.SellerReject) { if (WebSecurity.CurrentUserId == es.SellerId) { es.SellerDeleteDt = DateTime.Now; data.Save(); } else if (WebSecurity.CurrentUserId == es.BuyerId) { es.BuyerDeleteDt = DateTime.Now; data.Save(); } } else { return(View(new FeedbackModel() { EscrowId = guid.StringWithoutDashes() })); } } return(RedirectToAction("Index")); }
public HttpResponseMessage Put(string id, EscrowWebCreate form) { Guid listid; if (!string.IsNullOrEmpty(id) && Guid.TryParse(id, out listid)) { Listing list = data.Listings.GetByID(listid); if (list != null) { if (!form.PubKey.StartsWith("-----BEGIN PUBLIC KEY-----\nMI") || !form.PubKey.EndsWith("-----END PUBLIC KEY-----")) { ModelState.AddModelError("PubKey", "Invalid public key"); } if (list.UserProfile.UserId == WebSecurity.CurrentUserId) // cant buy own item { ModelState.AddModelError("id", "Cannot buy own item"); } if (list.ListingAdditions.Any(s => (ListingAdditionType)s.AdditionType == ListingAdditionType.Shipping) && (!form.ShippingId.HasValue || !list.ListingAdditions.Where(s => (ListingAdditionType)s.AdditionType == ListingAdditionType.Shipping) .Any(s => s.LAId == form.ShippingId.Value))) // Bad shipping selection { ModelState.AddModelError("ShippingId", "Invalid shipping id"); } if ((form.VariationId.HasValue && form.VariationId.Value > -1) && !list.ListingAdditions.Where(s => (ListingAdditionType)s.AdditionType == ListingAdditionType.SingleSelect) .Any(s => s.LAId == form.VariationId.Value)) // Bad variation { ModelState.AddModelError("VariationId", "Invalid variation id"); } if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState)); } else { ListingAddition ship = form.ShippingId.HasValue ? list.ListingAdditions.SingleOrDefault(s => s.LAId == form.ShippingId.Value) : null; ListingAddition vari = form.VariationId.HasValue && form.VariationId.Value > -1 ? list.ListingAdditions.SingleOrDefault(s => s.LAId == form.VariationId.Value) : null; EscrowCodeSet cs = new EscrowCodeSet(); Escrow escrow = new Escrow() { EscrowId = Guid.NewGuid(), BuyerId = WebMatrix.WebData.WebSecurity.CurrentUserId, SellerId = list.UserId, BuyerPubkey = form.PubKey, BuyerPrivkey = form.EncPrivKey, EicA = cs.EscrowInvitationCodeA, EicB = cs.EscrowInvitationCodeB, State = (int)EscrowState.Created, CreatedDate = DateTime.Now, ListingId = list.ListingId, ShippingName = ship != null ? ship.Name : null, ShippingPrice = ship != null ? ship.Price : new Nullable <decimal>(), VariationName = vari != null ? vari.Name : null }; //pubkeymd5 = MD5.Create() // .ComputeHash(Encoding.UTF8.GetBytes(form.PubKey)) // .Select(x => x.ToString("x2")) // .Aggregate((i, j) => i + j) try { data.Escrows.Insert(escrow); data.Save(); User buyer = data.Users.GetByID(WebMatrix.WebData.WebSecurity.CurrentUserId); string emailBodyText = "<p>User <b>" + buyer.UserName + "</b> wants to purchase your listing for: </p>" + "<p><i>" + escrow.Listing.Title + "</p></i>" + "<p>Click <a href=\"https://anark.it/escrow/\">here</a> to view your transactions</p><br/>" + "<p>You may contact the buyer at <a href=\"mailto:" + buyer.Email + "\">" + buyer.Email + "</a></p>" + "<p>For extra security, ask for the Session Code from the buyer if he has not already emailed it to you.</p>"; Globals.SendEmail(list.UserProfile.Email, "You have a purchase request!", emailBodyText); } catch (Exception err) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Failed to save")); } return(Request.CreateResponse(HttpStatusCode.Created, list.UserProfile.Email)); } } else { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Not found")); } } else { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Not found")); } }
public HttpResponseMessage Post(Guid id, EscrowWebAccept model) { Escrow escrow = data.Escrows.GetByID(id); Listing list = escrow != null ? escrow.Listing : null; if (list != null && escrow != null && WebSecurity.CurrentUserId == escrow.SellerId) { if (escrow.EscrowAccept != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } if (!model.PubKey.StartsWith("-----BEGIN PUBLIC KEY-----\nMI") || !model.PubKey.EndsWith("-----END PUBLIC KEY-----")) { ModelState.AddModelError("PubKey", "Invalid public key"); } byte[] hex = Util.Base58CheckToByteArray(model.BitcoinAddr); if (hex == null || hex.Length != 21) { ModelState.AddModelError("BitcoinAddr", "Address is not valid."); } if (!ModelState.IsValid) { Request.CreateResponse(HttpStatusCode.BadRequest, ModelState); } EscrowAccept accept = new EscrowAccept() { AutoReleaseDt = DateTime.Now.AddDays(14), CreatedDate = DateTime.Now, EscrowAddress = model.BitcoinAddr, PinvBuyer = model.PinvEncBuyer, PinvSeller = model.PinvEncSeller, SellerPubkey = model.PubKey, SellerPrivkey = model.EncPrivKey }; escrow.State = (int)EscrowState.Accepted; try { data.EscrowAccepts.Insert(accept); escrow.EscrowAccept = accept; //list.CurrentEscrow = escrow; data.Save(); Thread t = new Thread(new ThreadStart(delegate() { try { AnarkRE.Communication.PipeClient pc = new Communication.PipeClient(); pc.SendData(accept.AcceptId + "," + accept.EscrowAddress); } catch (Exception err) { Globals.WriteError("pipeerror.log", err); } })); t.IsBackground = true; t.Start(); try { string emailBodyText = "<p>The seller has accepted your request to buy the listing: </p>" + "<p><i>" + escrow.Listing.Title + "</p></i>" + "<p>Click <a href=\"https://anark.it/escrow/view/" + escrow.EscrowId.StringWithoutDashes() + "\">here</a> to view this transaction</p><br/>" + "<p>Upon entering your transaction password, the verified escrow bitcoin address will be shown. Send your payment to this bitcoin address and notify the seller so that he may begin delivery." + "<p>After you have received your order, be sure to log back in and release the funds to the seller.</p>"; Globals.SendEmail(escrow.UserBuyer.Email, "Purchase Request Accepted!", emailBodyText); } catch { } return(Request.CreateResponse(HttpStatusCode.OK, new { })); } catch (Exception err) { Globals.WriteError("accepterror.log", err); return(Request.CreateResponse(HttpStatusCode.BadRequest, "Save failed")); } } return(Request.CreateResponse(HttpStatusCode.NotFound)); }
private static void Handle_Escrow ( Shell Dispatch, string[] args, int index) { Escrow Options = new Escrow (); var Registry = new Goedel.Registry.Registry (); Options.Quorum.Register ("quorum", Registry, (int) TagType_Escrow.Quorum); Options.Shares.Register ("shares", Registry, (int) TagType_Escrow.Shares); Options.Portal.Register ("portal", Registry, (int) TagType_Escrow.Portal); Options.UDF.Register ("udf", Registry, (int) TagType_Escrow.UDF); Options.Verbose.Register ("verbose", Registry, (int) TagType_Escrow.Verbose); Options.Report.Register ("report", Registry, (int) TagType_Escrow.Report); #pragma warning disable 162 for (int i = index; i< args.Length; i++) { if (!IsFlag (args [i][0] )) { throw new System.Exception ("Unexpected parameter: " + args[i]);} string Rest = args [i].Substring (1); TagType_Escrow TagType = (TagType_Escrow) Registry.Find (Rest); // here have the cases for what to do with it. switch (TagType) { case TagType_Escrow.Quorum : { int OptionParams = Options.Quorum.Tag (Rest); if (OptionParams>0 && ((i+1) < args.Length)) { if (!IsFlag (args [i+1][0] )) { i++; Options.Quorum.Parameter (args[i]); } } break; } case TagType_Escrow.Shares : { int OptionParams = Options.Shares.Tag (Rest); if (OptionParams>0 && ((i+1) < args.Length)) { if (!IsFlag (args [i+1][0] )) { i++; Options.Shares.Parameter (args[i]); } } break; } case TagType_Escrow.Portal : { int OptionParams = Options.Portal.Tag (Rest); if (OptionParams>0 && ((i+1) < args.Length)) { if (!IsFlag (args [i+1][0] )) { i++; Options.Portal.Parameter (args[i]); } } break; } case TagType_Escrow.UDF : { int OptionParams = Options.UDF.Tag (Rest); if (OptionParams>0 && ((i+1) < args.Length)) { if (!IsFlag (args [i+1][0] )) { i++; Options.UDF.Parameter (args[i]); } } break; } case TagType_Escrow.Verbose : { int OptionParams = Options.Verbose.Tag (Rest); if (OptionParams>0 && ((i+1) < args.Length)) { if (!IsFlag (args [i+1][0] )) { i++; Options.Verbose.Parameter (args[i]); } } break; } case TagType_Escrow.Report : { int OptionParams = Options.Report.Tag (Rest); if (OptionParams>0 && ((i+1) < args.Length)) { if (!IsFlag (args [i+1][0] )) { i++; Options.Report.Parameter (args[i]); } } break; } default : throw new System.Exception ("Internal error"); } } #pragma warning restore 162 Dispatch.Escrow (Options); }
public virtual void Escrow ( Escrow Options ) { char UsageFlag = '-'; { #pragma warning disable 219 Escrow Dummy = new Escrow (); #pragma warning restore 219 Console.Write ("{0}escrow ", UsageFlag); Console.Write ("[{0}] ", Dummy.Quorum.Usage ("quorum", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Shares.Usage ("shares", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Create a set of key escrow shares"); } Console.WriteLine (" {0}\t{1} = [{2}]", "integer", "Quorum", Options.Quorum); Console.WriteLine (" {0}\t{1} = [{2}]", "integer", "Shares", Options.Shares); Console.WriteLine (" {0}\t{1} = [{2}]", "String", "Portal", Options.Portal); Console.WriteLine (" {0}\t{1} = [{2}]", "String", "UDF", Options.UDF); Console.WriteLine (" {0}\t{1} = [{2}]", "Flag", "Verbose", Options.Verbose); Console.WriteLine (" {0}\t{1} = [{2}]", "Flag", "Report", Options.Report); Console.WriteLine ("Not Yet Implemented"); }
private static void Usage () { Console.WriteLine ("brief"); Console.WriteLine (""); { #pragma warning disable 219 Reset Dummy = new Reset (); #pragma warning restore 219 Console.Write ("{0}reset ", UsageFlag); Console.WriteLine (); Console.WriteLine (" Delete all test profiles"); } { #pragma warning disable 219 Device Dummy = new Device (); #pragma warning restore 219 Console.Write ("{0}device ", UsageFlag); Console.Write ("[{0}] ", Dummy.DeviceID.Usage (null, "id", UsageFlag)); Console.Write ("[{0}] ", Dummy.DeviceDescription.Usage (null, "dd", UsageFlag)); Console.Write ("[{0}] ", Dummy.Default.Usage ("default", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Create new device profile"); } { #pragma warning disable 219 Personal Dummy = new Personal (); #pragma warning restore 219 Console.Write ("{0}personal ", UsageFlag); Console.Write ("[{0}] ", Dummy.Portal.Usage (null, "portal", UsageFlag)); Console.Write ("[{0}] ", Dummy.Description.Usage (null, "pd", UsageFlag)); Console.Write ("[{0}] ", Dummy.Next.Usage ("next", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.DeviceNew.Usage ("new", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.DeviceUDF.Usage ("dudf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.DeviceID.Usage ("did", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.DeviceDescription.Usage ("dd", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Create new personal profile"); } { #pragma warning disable 219 Register Dummy = new Register (); #pragma warning restore 219 Console.Write ("{0}register ", UsageFlag); Console.Write ("[{0}] ", Dummy.UDF.Usage (null, "udf", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage (null, "portal", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Register the specified profile at a new portal"); } { #pragma warning disable 219 Sync Dummy = new Sync (); #pragma warning restore 219 Console.Write ("{0}sync ", UsageFlag); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Synchronize local copies of Mesh profiles with the server"); } { #pragma warning disable 219 Escrow Dummy = new Escrow (); #pragma warning restore 219 Console.Write ("{0}escrow ", UsageFlag); Console.Write ("[{0}] ", Dummy.Quorum.Usage ("quorum", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Shares.Usage ("shares", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Create a set of key escrow shares"); } { #pragma warning disable 219 Export Dummy = new Export (); #pragma warning restore 219 Console.Write ("{0}export ", UsageFlag); Console.Write ("[{0}] ", Dummy.File.Usage (null, "file", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Export the specified profile data to the specified file"); } { #pragma warning disable 219 Import Dummy = new Import (); #pragma warning restore 219 Console.Write ("{0}import ", UsageFlag); Console.Write ("[{0}] ", Dummy.File.Usage (null, "file", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Import the specified profile data to the specified file"); } { #pragma warning disable 219 List Dummy = new List (); #pragma warning restore 219 Console.Write ("{0}list ", UsageFlag); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" List all profiles on the local machine"); } { #pragma warning disable 219 Dump Dummy = new Dump (); #pragma warning restore 219 Console.Write ("{0}dump ", UsageFlag); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Describe the specified profile"); } { #pragma warning disable 219 Pending Dummy = new Pending (); #pragma warning restore 219 Console.Write ("{0}pending ", UsageFlag); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Get list of pending connection requests"); } { #pragma warning disable 219 Connect Dummy = new Connect (); #pragma warning restore 219 Console.Write ("{0}connect ", UsageFlag); Console.Write ("[{0}] ", Dummy.Portal.Usage (null, "portal", UsageFlag)); Console.Write ("[{0}] ", Dummy.PIN.Usage ("pin", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.DeviceNew.Usage ("new", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.DeviceUDF.Usage ("dudf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.DeviceID.Usage ("did", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.DeviceDescription.Usage ("dd", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Connect to an existing profile registered at a portal"); } { #pragma warning disable 219 Accept Dummy = new Accept (); #pragma warning restore 219 Console.Write ("{0}accept ", UsageFlag); Console.Write ("[{0}] ", Dummy.DeviceUDF.Usage (null, "udf", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Accept a pending connection"); } { #pragma warning disable 219 Complete Dummy = new Complete (); #pragma warning restore 219 Console.Write ("{0}complete ", UsageFlag); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Complete a pending connection request"); } { #pragma warning disable 219 Password Dummy = new Password (); #pragma warning restore 219 Console.Write ("{0}password ", UsageFlag); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Add a web application profile to a personal profile"); } { #pragma warning disable 219 AddPassword Dummy = new AddPassword (); #pragma warning restore 219 Console.Write ("{0}pwadd ", UsageFlag); Console.Write ("[{0}] ", Dummy.Site.Usage (null, "site", UsageFlag)); Console.Write ("[{0}] ", Dummy.Username.Usage (null, "user", UsageFlag)); Console.Write ("[{0}] ", Dummy.Password.Usage (null, "password", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Add password entry"); } { #pragma warning disable 219 GetPassword Dummy = new GetPassword (); #pragma warning restore 219 Console.Write ("{0}pwget ", UsageFlag); Console.Write ("[{0}] ", Dummy.Site.Usage (null, "site", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Lookup password entry"); } { #pragma warning disable 219 DeletePassword Dummy = new DeletePassword (); #pragma warning restore 219 Console.Write ("{0}pwdelete ", UsageFlag); Console.Write ("[{0}] ", Dummy.Site.Usage (null, "site", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Delete password entry"); } { #pragma warning disable 219 DumpPassword Dummy = new DumpPassword (); #pragma warning restore 219 Console.Write ("{0}pwdump ", UsageFlag); Console.Write ("[{0}] ", Dummy.JSON.Usage (null, "json", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Describe password entry"); } { #pragma warning disable 219 Mail Dummy = new Mail (); #pragma warning restore 219 Console.Write ("{0}mail ", UsageFlag); Console.Write ("[{0}] ", Dummy.address.Usage (null, "address", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Add a mail application profile to a personal profile"); } { #pragma warning disable 219 SSH Dummy = new SSH (); #pragma warning restore 219 Console.Write ("{0}ssh ", UsageFlag); Console.Write ("[{0}] ", Dummy.Host.Usage (null, "host", UsageFlag)); Console.Write ("[{0}] ", Dummy.Client.Usage (null, "client", UsageFlag)); Console.Write ("[{0}] ", Dummy.Portal.Usage ("portal", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.UDF.Usage ("udf", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Verbose.Usage ("verbose", "value", UsageFlag)); Console.Write ("[{0}] ", Dummy.Report.Usage ("report", "value", UsageFlag)); Console.WriteLine (); Console.WriteLine (" Add a ssh application profile to a personal profile"); } } // Usage
public ActionResult Finalize(FeedbackModel model) { Guid guid; if (!Guid.TryParse(model.EscrowId, out guid)) { return(RedirectToAction("notfound", "error")); } Escrow es = data.Escrows.GetByID(guid); if ((EscrowState)es.State == EscrowState.Closed) { EscrowClosedBy closedby = (EscrowClosedBy)es.ClosedBy.Value; if (closedby != EscrowClosedBy.BuyerCancel || closedby != EscrowClosedBy.SellerReject) { if (WebSecurity.CurrentUserId == es.SellerId) { es.SellerDeleteDt = DateTime.Now; Feedback fb = new Feedback() { AboutSeller = false, AboutUserId = es.BuyerId, CreatedDate = DateTime.Now, FromUserId = WebSecurity.CurrentUserId, ListingId = es.ListingId, Message = model.Message, Stars = model.Score, }; data.Feedbacks.Insert(fb); if (es.UserBuyer.FeedbacksAbout.Count > 0) { es.UserBuyer.TotalScore = es.UserBuyer.FeedbacksAbout .Select(s => (decimal)s.Stars).Average(); if (es.UserBuyer.FeedbacksAbout.Where(s => !s.AboutSeller).Count() > 0) { es.UserBuyer.BuyerScore = es.UserBuyer.FeedbacksAbout.Where(s => !s.AboutSeller) .Select(s => (decimal)s.Stars).Average(); } } data.Save(); } else if (WebSecurity.CurrentUserId == es.BuyerId) { es.BuyerDeleteDt = DateTime.Now; Feedback fb = new Feedback() { AboutSeller = true, AboutUserId = es.SellerId, CreatedDate = DateTime.Now, FromUserId = WebSecurity.CurrentUserId, ListingId = es.ListingId, Message = model.Message, Stars = model.Score }; data.Feedbacks.Insert(fb); if (es.UserSeller.FeedbacksAbout.Count > 0) { es.UserSeller.TotalScore = es.UserSeller.FeedbacksAbout .Select(s => (decimal)s.Stars).Average(); if (es.UserSeller.FeedbacksAbout.Where(s => s.AboutSeller).Count() > 0) { es.UserSeller.SellerScore = es.UserSeller.FeedbacksAbout.Where(s => s.AboutSeller) .Select(s => (decimal)s.Stars).Average(); } } data.Save(); } } } return(RedirectToAction("Index")); }
public ActionResult View(string id) { Guid guid; if (!Guid.TryParse(id, out guid)) { return(RedirectToAction("notfound", "error")); } Escrow escrow = data.Escrows.GetByID(guid); Listing list = escrow != null ? escrow.Listing : null; if (list != null && escrow != null && (WebSecurity.CurrentUserId == escrow.BuyerId || WebSecurity.CurrentUserId == escrow.SellerId)) { Guid listid = list.ListingId; EscrowView model = new EscrowView() { Id = listid.StringWithoutDashes(), IsBuyer = WebSecurity.CurrentUserId == escrow.BuyerId, EscrowId = escrow.EscrowId.StringWithoutDashes(), Item = ListingToItem(list), ClosedBy = escrow.ClosedBy != null ? (EscrowClosedBy)escrow.ClosedBy : new Nullable <EscrowClosedBy>(), FeedBadge = WebSecurity.CurrentUserId == escrow.BuyerId ? new FeedbackBadgeModel() { Sales = list.UserProfile.FeedbacksAbout.Count, Username = list.UserProfile.UserName, Score = list.UserProfile.SellerScore } : new FeedbackBadgeModel() { Sales = escrow.UserBuyer.FeedbacksAbout.Count, Username = escrow.UserBuyer.UserName, Score = escrow.UserBuyer.BuyerScore } }; model.Item.Options = new PurchaseOptions() { ShippingName = escrow.ShippingName, ShippingPrice = escrow.ShippingPrice, VariationChoice = escrow.VariationName }; if (model.IsBuyer) // buyer { if (escrow.EscrowAccept != null) { model.MyPubkey = escrow.BuyerPubkey; model.ThierPubkey = escrow.EscrowAccept.SellerPubkey; model.Eic = escrow.EicB; model.PivEnc = escrow.EscrowAccept.PinvBuyer; model.MyPrivkeyEnc = escrow.BuyerPrivkey; model.BitcoinAddress = escrow.EscrowAccept.EscrowAddress; if (escrow.SellerReleaseDt != null) { model.ReleaseCode = escrow.EicA; } } else { return(RedirectToAction("Index")); } } else // seller { model.ThierPubkey = escrow.BuyerPubkey; model.Eic = escrow.EicA; if (escrow.EscrowAccept != null) { model.MyPubkey = escrow.EscrowAccept.SellerPubkey; model.PivEnc = escrow.EscrowAccept.PinvSeller; model.MyPrivkeyEnc = escrow.EscrowAccept.SellerPrivkey; model.BitcoinAddress = escrow.EscrowAccept.EscrowAddress; if (escrow.BuyerReleaseDt != null) { model.ReleaseCode = escrow.EicB; } } } model.Balance = 0; try { if (!string.IsNullOrEmpty(model.BitcoinAddress)) { model.Balance = decimal.Parse(new WebClient().DownloadString("https://blockchain.info/q/addressbalance/" + model.BitcoinAddress)) / 100000000M; if (!escrow.EscrowAccept.LastAddressBalance.HasValue || escrow.EscrowAccept.LastAddressBalance.Value != model.Balance) { escrow.EscrowAccept.LastAddressBalance = model.Balance; data.Save(); } } } catch { } ViewBag.Title = "View escrow transaction"; return(View(model)); } else { return(RedirectToAction("notfound", "error")); } }
public ActionResult Release(string id) { Guid guid; if (!Guid.TryParse(id, out guid)) { return(RedirectToAction("notfound", "error")); } Escrow escrow = data.Escrows.GetByID(guid); if (escrow != null && (escrow.BuyerId == WebSecurity.CurrentUserId || escrow.SellerId == WebSecurity.CurrentUserId)) { escrow.ClosedDt = DateTime.Now; escrow.State = (int)EscrowState.Closed; //if (escrow.EscrowId == escrow.Listing.ActiveEscrowId) // remove active from listing once purchaced - disabled //{ // escrow.Listing.ActiveEscrowId = null; // data.Listings.Update(escrow.Listing); //} if (WebSecurity.CurrentUserId == escrow.SellerId) { if (escrow.EscrowAccept == null) { escrow.ClosedBy = (int)EscrowClosedBy.SellerReject; escrow.SellerDeleteDt = DateTime.Now; } else { escrow.ClosedBy = (int)EscrowClosedBy.Seller; escrow.SellerReleaseDt = DateTime.Now; string emailBodyText = "<p>The seller <b>" + escrow.UserSeller.UserName + "</b> has released the escrow funds to you for the listing:</p>" + "<p><i>" + escrow.Listing.Title + "</p></i>" + "<p>To view the transaction and claim your funds <a href=\"" + Url.Action("view", "escrow", new { id = escrow.EscrowId.StringWithoutDashes() }, Request.Url.Scheme) + "\">click here</a></p><br/>" + "<p>We recommend you save this transaction page by using File -> Save as a backup before deleting the transaction.</p>" + "<p>You will need to enter your escrow transaction password to calculate the bitcoin private key. If you have lost this password then you will be unable to spend your coins and must return them to the other party. If this happens to you, please <a href=\"mailto:[email protected]\">email support</a></p>"; Globals.SendEmail(escrow.UserBuyer.Email, "Claim your escrow funds!", emailBodyText); } } else if (WebSecurity.CurrentUserId == escrow.BuyerId) { if (escrow.EscrowAccept == null) { escrow.ClosedBy = (int)EscrowClosedBy.BuyerCancel; escrow.BuyerDeleteDt = DateTime.Now; } else { escrow.ClosedBy = (int)EscrowClosedBy.Buyer; escrow.BuyerReleaseDt = DateTime.Now; string emailBodyText = "<p>The buyer <b>" + escrow.UserBuyer.UserName + "</b> has released the escrow funds to you for the listing:</p>" + "<p><i>" + escrow.Listing.Title + "</p></i>" + "<p>To view the transaction and claim your funds <a href=\"" + Url.Action("view", "escrow", new { id = escrow.EscrowId.StringWithoutDashes() }, Request.Url.Scheme) + "\">click here</a></p><br/>" + "<p>We recommend you save this transaction page by using File -> Save as a backup before deleting the transaction.</p>" + "<p>You will need to enter your escrow transaction password to calculate the bitcoin private key. If you have lost this password then you will be unable to spend your coins and must return them to the other party. If this happens to you, please <a href=\"mailto:[email protected]\">email support</a></p>"; Globals.SendEmail(escrow.UserSeller.Email, "Claim your escrow funds!", emailBodyText); } } data.Save(); } return(RedirectToAction("Index")); }
/// <summary> /// /// </summary> /// <param name="Options">Command line parameters</param> public override void Escrow(Escrow Options) { SetReporting(Options.Report, Options.Verbose); }