public ActionResult DevEditPost(DevEditViewModel editVm) { var repo = new Repository(); var original = GetDevEditViewModel(editVm.Id); original.Message = editVm.Message; var asc = new WebClient().DownloadData(repo.GetASCLink(editVm.Id)); string extracted; if (!CryptoHelper.VerifySig(asc, editVm.Message, out extracted)) { ModelState.AddModelError("Message", "Incorrectly signed"); } else { byte[] hash = null; using (SHA256 sha = new SHA256Managed()) { hash = sha.ComputeHash(Encoding.UTF8.GetBytes(extracted)); } if (repo.SaveHash(hash)) { repo.UpdateDevViewModel(original); return(RedirectToAction("Dev", "Main", new { devId = editVm.Id })); } else { ModelState.AddModelError("Message", "You can't replay an old message"); } } return(View("DevEdit", original)); }
public void UpdateDevViewModel(DevEditViewModel dev) { var bytes = Encoding.UTF8.GetBytes(dev.Message); var sigBlob = GetSigBlob(dev.Id); //hashBlob.Properties.ContentEncoding = "text/html; charset=UTF-8"; sigBlob.UploadFromByteArray(bytes, 0, bytes.Length); }
public ActionResult DevEdit(string id) { if (!ViewBag.IsAdmin) { return(RedirectToAction("Index", "Home")); } WdContext.SiteMapMenu.ActionMenu.Name = "编辑监测点"; var model = new DevEditViewModel(); if (string.IsNullOrWhiteSpace(id)) { WdContext.SiteMapMenu.ActionMenu.Name = "新增监测点"; model.Id = -1; model.IsNew = true; model.StartTime = DateTime.Now; model.PreEndTime = DateTime.Now; model.EndTime = DateTime.Now; } else { var dev = DbContext.T_Devs.First(item => item.Id.ToString() == id); model.Id = dev.Id; model.DevCode = dev.DevCode; model.StartTime = dev.StartTime; model.PreEndTime = dev.PreEndTime; model.EndTime = dev.EndTime; model.DevStatus = dev.DevStatus; model.StatId = int.Parse(dev.StatId); model.VideoUrl = dev.VideoURL; var devAddr = DbContext.T_DevAddr.First(obj => obj.DevId == dev.Id).NodeId; model.Addr = BitConverter.ToString(devAddr).Replace("-", string.Empty); } ViewBag.ReturnUrl = "/Admin/DevManage"; model.StatList = new SelectList(DbContext.T_Stats, "Id", "StatName", model.StatId); var statusList = new List <SelectListItem> { new SelectListItem() { Text = "是", Value = "1" }, new SelectListItem() { Text = "否", Value = "0" } }; model.StatusLIst = new SelectList(statusList, "Value", "Text", model.DevStatus); return(View(model)); }
private static DevEditViewModel GetDevEditViewModel(string devId) { var repo = new Repository(); var vm = repo.GetDevViewModel(devId); var editVm = new DevEditViewModel(); editVm.Id = vm.Id; editVm.FriendlyName = vm.FriendlyName; editVm.MessageLink = vm.MessageLink; editVm.ASCLink = vm.ASCLink; if (vm.Message != null) { editVm.Message = repo.GetSig(editVm.Id); } editVm.SignatureSample = repo.GetSigLink("zsample"); editVm.ResultSample = "/Opinion/zsample"; return(editVm); }
public ActionResult DevEdit(DevEditViewModel model) { if (!ViewBag.IsAdmin) { return(RedirectToAction("Index", "Home")); } var dev = model.Id == -1 ? new T_Devs() : DbContext.T_Devs.First(item => item.Id == model.Id); dev.DevCode = model.DevCode; dev.StartTime = model.StartTime; dev.PreEndTime = model.PreEndTime; dev.EndTime = model.EndTime; dev.VideoURL = model.VideoUrl; dev.StatId = model.StatId.ToString(); dev.DevStatus = model.DevStatus; if (model.Id == -1) { DbContext.T_Devs.Add(dev); DbContext.SaveChanges(); var addr = new T_DevAddr { DevId = DbContext.T_Devs.First(obj => obj.DevCode == model.DevCode).Id, NodeId = Global.StringToHexByte(model.Addr) }; DbContext.T_DevAddr.Add(addr); } else { DbContext.T_Devs.Add(dev); } DbContext.SaveChanges(); return(RedirectToAction("DevManage", "Admin")); }