コード例 #1
0
        private int GetDetectionDeviceId()
        {
            using (FalconOrchestratorDB db = new FalconOrchestratorDB())
            {
                int detectDeviceId;
                if (db.Devices.Any(x => x.Hostname.Equals(data.ComputerName)))
                {
                    int             deviceId     = db.Devices.Where(x => x.Hostname.Equals(data.ComputerName)).Select(x => x.DeviceId).Single();
                    DetectionDevice detectDevice = new DetectionDevice();
                    detectDevice.DeviceId  = deviceId;
                    detectDevice.IPAddress = data.IPAddress;
                    db.DetectionDevices.Add(detectDevice);
                    db.SaveChanges();
                    detectDeviceId = detectDevice.DetectionDeviceId;
                }
                else
                {
                    Device device = new Device();
                    device.Hostname = data.ComputerName;
                    device.SensorId = data.SensorId;
                    device.Domain   = data.MachineDomain;
                    db.Devices.Add(device);

                    DetectionDevice detectDevice = new DetectionDevice();
                    detectDevice.DeviceId = device.DeviceId;
                    db.DetectionDevices.Add(detectDevice);
                    db.SaveChanges();
                    detectDeviceId = detectDevice.DetectionDeviceId;
                }
                return(detectDeviceId);
            }
        }
コード例 #2
0
        public void Update(DetectionEditViewModel model)
        {
            using (FalconOrchestratorDB db = new FalconOrchestratorDB())
            {
                if (model.Tags != null)
                {
                    int tagId;
                    foreach (string line in model.Tags.Split(','))
                    {
                        //if tag already exists, get ID
                        if (db.Tags.Any(x => x.Name.Equals(line.ToLower())))
                        {
                            tagId = db.Tags.Where(x => x.Name.Equals(line.ToLower())).Select(x => x.TagId).FirstOrDefault();
                        }
                        //otherwise create a new tag and return that ID
                        else
                        {
                            Tag tag = new Tag();
                            tag.Name = line.ToLower();
                            db.Tags.Add(tag);
                            db.SaveChanges();
                            tagId = tag.TagId;
                        }

                        //Associate the tag with the detection
                        DetectionTag dt = new DetectionTag();
                        dt.DetectionId = model.DetectionId;
                        dt.TagId       = tagId;
                        db.DetectionTags.Add(dt);
                        db.SaveChanges();
                    }
                }

                Detection detection = db.Detections.Find(model.DetectionId);
                detection.CustomSeverityId = model.CustomSeverityId;
                detection.ResponderId      = model.ResponderId;
                detection.Comment          = model.Comment;

                //If status in DB is currently of type open but view model is of type closed, set closed date to current time
                if ((detection.StatusId.Equals(1) || detection.StatusId.Equals(2) || detection.StatusId.Equals(3) || detection.StatusId.Equals(4)) &&
                    model.StatusId.Equals(5) || model.StatusId.Equals(6) || model.StatusId.Equals(7))
                {
                    detection.ClosedDate = DateTime.UtcNow;
                }

                //If status in DB is currently of type closed but view model is of type open, set closed date to null
                if ((detection.StatusId.Equals(5) || detection.StatusId.Equals(6) || detection.StatusId.Equals(7)) &&
                    model.StatusId.Equals(1) || model.StatusId.Equals(2) || model.StatusId.Equals(3) || detection.StatusId.Equals(4))
                {
                    detection.ClosedDate = null;
                }

                //order matters, set status after closed date handling logic
                detection.StatusId        = model.StatusId;
                db.Entry(detection).State = System.Data.Entity.EntityState.Modified;

                //if IP manually provided update db record with the new IP
                if (model.Asset.IPAddress != null)
                {
                    DetectionDevice dd = db.DetectionDevices.Find(detection.DetectionDeviceId);
                    dd.IPAddress       = model.Asset.IPAddress;
                    db.Entry(dd).State = System.Data.Entity.EntityState.Modified;
                }

                //if IP already exists and user supplies empty value update with null value
                if (detection.DetectionDevice.IPAddress != null && model.Asset.IPAddress == null)
                {
                    DetectionDevice dd = db.DetectionDevices.Find(detection.DetectionDeviceId);
                    dd.IPAddress       = null;
                    db.Entry(dd).State = System.Data.Entity.EntityState.Modified;
                }
                db.SaveChanges();
            }
        }