Beispiel #1
0
        public async Task <IActionResult> PutLogs(string id, Logs logs)
        {
            if (id != logs.LogId)
            {
                return(BadRequest());
            }

            _context.Entry(logs).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!LogsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <TEntity> Add(TEntity entity)
        {
            var addedEntry = await _ctx.AddAsync(entity);

            await _ctx.SaveChangesAsync();

            return(entity);
        }
        public async Task <Result <Exception, Log> > CreateAsync(Log entity)
        {
            entity.Validate();

            var newEntity = _context.Logs.Add(entity);

            await _context.SaveChangesAsync();

            return(newEntity.Entity);
        }
Beispiel #4
0
        public async Task <IActionResult> Create([Bind("Id,Author,LoggedDate,LogLevel,Message,Reference,Type")] Log log)
        {
            if (ModelState.IsValid)
            {
                _context.Add(log);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(log));
        }
Beispiel #5
0
        private async Task Log()
        {
            Log log = new Log {
                DateTime = DateTime.Now.ToString(), Method = Request.Method, Protocol = Request.Protocol, Host = Request.Host.ToString(), Path = Request.Path
            };
            await logdb.Logs.AddAsync(log);

            await logdb.SaveChangesAsync();

            logger.LogInformation($"DateTime: {DateTime.Now.ToString()} Method: {Request.Method} Protocol: {Request.Protocol} Host: {Request.Host} Path: {Request.Path}");
        }
Beispiel #6
0
        public async Task <IActionResult> Create([Bind("LogId,TradingPartnerCode,RecordYear,RecordMonth,GrievanceTotal,GrievanceSubmits,GrievanceErrors,AppealTotal,AppealSubmits,AppealErrors,COCTotal,COCSubmits,COCErrors,OONTotal,OONSubmits,OONErrors,PCPATotal,PCPASubmits,PCPAErrors,RunStatus,RunTime,RunBy")] ProcessLog processLog)
        {
            if (ModelState.IsValid)
            {
                _context.Add(processLog);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(processLog));
        }
Beispiel #7
0
        public async Task <IActionResult> PutLog(long id, LogViewModel logViewModel)
        {
            if (id != logViewModel.Id)
            {
                return(BadRequest());
            }

            var log = await _context.Logs.FindAsync(id);

            if (log == null)
            {
                return(NotFound());
            }

            _context.Entry(log).State = EntityState.Modified;

            if (!String.IsNullOrEmpty(logViewModel.IPAddress))
            {
                log.IPAddress = logViewModel.IPAddress;
            }

            if (!String.IsNullOrEmpty(logViewModel.LogDate))
            {
                log.LogDate = DateTime.Parse(logViewModel.LogDate);
            }

            if (!String.IsNullOrEmpty(logViewModel.LogMessage))
            {
                log.LogMessage = logViewModel.LogMessage;
            }

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!LogExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Beispiel #8
0
        private async Task MakeLogAsync(ModLog modLog, string reason = null)
        {
            // Get our logging channel.
            var logChannel = Context.Guild.TextChannels.FirstOrDefault(channel => channel.Name.ToLower() == _config["moderation_log_channel"].ToLower());

            // Define our embed color based on log severity.
            Color embedColour;

            switch (modLog.Severity)
            {
            case (Severity.Severe):
                embedColour = Color.Red;
                break;

            case (Severity.Medium):
                embedColour = Color.DarkOrange;
                break;

            default:
                embedColour = Color.Orange;
                break;
            }

            // add our log and save changes
            _dctx.Add(modLog);
            await _dctx.SaveChangesAsync();

            // grab the entry so we can get the id
            var dbLog = _dctx.Modlogs.LastOrDefault();
            // build our embed
            var logEmbed = new EmbedBuilder
            {
                Title       = $"Log Message",
                Description = dbLog.Action + "\n\n" +
                              $"Time: {dbLog.Time.ToString("HH:mm:ss dd/MM/yyy")} GMT+0\n\n" +
                              $"Reason: {reason ?? _config["prefix"] + $"reason {dbLog.Id} to set a reason."}",
                Color  = embedColour,
                Footer = (new EmbedFooterBuilder {
                    Text = $"Case {dbLog.Id}"
                })
            };
            // send it off.
            var message = await logChannel.SendMessageAsync("", false, logEmbed.Build());

            // update the modlog with the id of the message that it refers to, so we can use the reason command later on.
            dbLog.MessageId = message.Id;
            await _dctx.SaveChangesAsync();
        }
        public async Task LogException(string controllerName, string actionName, Exception exception)
        {
            var log = new ApiExceptionLog(controllerName, actionName, exception);

            _context.ApiExceptionsLog.Add(log);

            await _context.SaveChangesAsync();
        }
 public async Task CreateLog(LogModel log)
 {
     lock (glush)
     {
         context.Logs.Add(log);
     };
     await context.SaveChangesAsync();
 }
        public async Task LogAsync(ICommandBase command, Exception exception)
        {
            var log = exception == null?CommandLog.Success(command) : CommandLog.Fail(command, exception);

            _context.CommandLogs.Add(log);

            await _context.SaveChangesAsync();
        }
Beispiel #12
0
        public async Task <IActionResult> PostLogEntity([FromBody] LogEntity logEntity)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.LogEntity.Add(logEntity);
            await _context.SaveChangesAsync();

            return(Json(logEntity));
        }
        public async Task <IHttpActionResult> Add(AdsDtoGeneric logDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Log log = new Log()
            {
                Deter        = Determiner.AdapterServer,
                ContractId   = "None",
                UseType      = "Create",
                Response     = false,
                UserType     = logDto.UserType,
                UserName     = logDto.UserName,
                Message      = $"Creation of {logDto.UserName}'s ADS",
                CreationDate = DateTime.Now
            };

            var res = CheckLog(log);

            if (res != null)
            {
                return(new System.Web.Http.Results.ResponseMessageResult(
                           Request.CreateErrorResponse(
                               (HttpStatusCode)422,
                               new HttpError($"Error in Log : {res} must contain a value")
                               )
                           ));
            }

            db.Logs.Add(log);
            await db.SaveChangesAsync();

            return(StatusCode(HttpStatusCode.OK));
        }
        public async Task Handle(DeviceOnLineIntegrationEvent @event)
        {
            var sameAlarms = _db.AlarmLogs.Where(w => w.EquipNum == @event.EquipNum && w.IsClear == false && w.AlarmCode == @event.AlarmCode).ToList();

            if (sameAlarms != null && sameAlarms.Count > 0)
            {
                foreach (var alarm in sameAlarms)
                {
                    alarm.ClearTime          = @event.ClearTime;
                    alarm.ClearReason        = @event.ClearReason;
                    alarm.CreationTime       = @event.CreationDate;
                    alarm.AlarmedDescription = @event.Description;
                }
                await _db.SaveChangesAsync();
            }
        }
Beispiel #15
0
        public async Task <bool> RegisterEventAsync(EventLogTypes eventLogTypes, string message, string source, string messageException, string userName)
        {
            EventLog eventLog = new EventLog()
            {
                EventLogTypeId   = eventLogTypes,
                Source           = source,
                Message          = message,
                MessageException = messageException,
                UserName         = userName,
                Date             = DateTime.UtcNow
            };

            _ctx.EventLogs.Add(eventLog);
            int c = await _ctx.SaveChangesAsync();

            return(c == 0 ? false : true);
        }
Beispiel #16
0
        public async Task <int> Put(User user)
        {
            var userTracker = _ctx.Set <User>().Local
                              .FirstOrDefault(entry => entry.UserId.Equals(user.UserId));

            if (userTracker != null)
            {
                _ctx.Entry(userTracker).State = EntityState.Detached;
            }
            _ctx.Entry(user).State = EntityState.Modified;
            _ctx.Entry(user).Property("Password").IsModified    = false;
            _ctx.Entry(user).Property("CreatedDate").IsModified = false;
            user.UpdatedDate = DateTime.Now;
            await _ctx.SaveChangesAsync();

            return(user.UserId);
        }
Beispiel #17
0
        protected override async Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken cancellationToken)
        {
            using (var logContext = new LogContext()) {
                logContext.LogMessages.Add(new LogMessage
                {
                    MachineName   = this.Host,
                    Exception     = logEvent.Exception?.ToString(),
                    LoggerName    = logEvent.LoggerName,
                    Level         = logEvent.Level.ToString(),
                    Message       = logEvent.Message,
                    MessageSource = logEvent.CallerFilePath,
                    TimeStamp     = logEvent.TimeStamp
                });

                await logContext.SaveChangesAsync(cancellationToken);
            }
        }
Beispiel #18
0
        /// <summary>
        /// 错误日志记录
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task ErrorLogAsync(ExceptionContext context)
        {
            try
            {
                var token    = context.HttpContext.Request.Headers["Authorization"];
                var ip       = context.HttpContext.Connection.RemoteIpAddress.ToString();
                var url      = context.HttpContext.Request.GetUriPath();
                var request  = context.HttpContext.Request.GetRequestParam();
                var errorMsg = "msg:" + context.Exception.Message + "\r\nStackTrace:" + context.Exception.StackTrace;

                var utcNow = DateTime.UtcNow;
                await logContext.ErrorLogs.AddAsync(new ErrorLog { Token = token, ErrorMsg = errorMsg, IP = ip, Url = url, Request = request, CreateTime = utcNow, ModifyTime = utcNow });

                await logContext.SaveChangesAsync();
            }
            catch (Exception ex)
            { }
        }
Beispiel #19
0
        public async Task <IActionResult> LoadResponse(ResponseViewModel model)
        {
            model.SelectedFiles = Directory.EnumerateFiles(model.FilePath).Select(x => Path.GetFileName(x)).ToList();
            foreach (string fileName in model.SelectedFiles)
            {
                if (fileName.ToUpper().Contains("PCPA"))
                {
                    ResponseFile pcpaResponseFile = new ResponseFile();

                    pcpaResponseFile.responseHierarchy = new List <ResponseHierarchy>();
                    pcpaResponseFile.responseHierarchy.Add(new ResponseHierarchy {
                        levelIdentifier = "File", sectionIdentifier = null, responses = new List <ResponseDetail>(), children = new List <ResponseChildren>()
                    });

                    pcpaResponseFile.responseHierarchy[0].children.Add(new ResponseChildren {
                        levelIdentifier = "Header", sectionIdentifier = null, responses = new List <ResponseDetail>()
                    });
                    pcpaResponseFile.responseHierarchy[0].children.Add(new ResponseChildren {
                        levelIdentifier = "PCPA", sectionIdentifier = null, responses = new List <ResponseDetail>()
                    });


                    string ss2 = System.IO.File.ReadAllText(Path.Combine(model.FilePath, fileName));
                    pcpaResponseFile = JsonLib.JsonDeserialize.DeserializeReponseFile(ref ss2);
                    //check if it's test file or production file
                    SubmissionLog slog        = _contextLog.SubmissionLogs.FirstOrDefault(x => x.FileName == pcpaResponseFile.fileName);
                    long          pcpaPointer = 0;
                    PcpHeader     header      = null;
                    if (slog != null)
                    {
                        header      = _contextHistory.PcpHeaders.FirstOrDefault(x => x.ReportingPeriod.Substring(0, 6) == slog.RecordYear + slog.RecordMonth);
                        pcpaPointer = _contextHistory.PcpAssignments.Where(x => x.PcpHeaderId == header.PcpHeaderId).Min(x => x.PcpAssignmentId);
                    }
                    McpdipHeader rHeader = new McpdipHeader
                    {
                        FileName         = pcpaResponseFile.fileName,
                        FileType         = pcpaResponseFile.fileType,
                        SubmitterName    = pcpaResponseFile.submitterName,
                        SubmissionDate   = pcpaResponseFile.submissionDate,
                        ValidationStatus = pcpaResponseFile.validationStatus,
                        Levels           = pcpaResponseFile.levels,
                        SchemaVersion    = pcpaResponseFile.schemaVersion
                    };
                    if (slog != null)
                    {
                        rHeader.RecordYear  = slog.RecordYear;
                        rHeader.RecordMonth = slog.RecordMonth;
                    }
                    else
                    {
                        rHeader.RecordYear  = _contextStaging.McpdHeaders.First().ReportingPeriod.Substring(0, 4);
                        rHeader.RecordMonth = _contextStaging.McpdHeaders.First().ReportingPeriod.Substring(4, 2);
                    }
                    _context.McpdipHeaders.Add(rHeader);
                    await _context.SaveChangesAsync();

                    McpdipHierarchy hierarchy = new McpdipHierarchy
                    {
                        HeaderId          = rHeader.HeaderId,
                        LevelIdentifier   = pcpaResponseFile.responseHierarchy[0].levelIdentifier,
                        SectionIdentifier = pcpaResponseFile.responseHierarchy[0].sectionIdentifier
                    };
                    _context.McpdipHierarchies.Add(hierarchy);
                    await _context.SaveChangesAsync();

                    if (pcpaResponseFile.responseHierarchy[0].responses.Count > 0)
                    {
                        foreach (var response in pcpaResponseFile.responseHierarchy[0].responses)
                        {
                            McpdipDetail detail = new McpdipDetail
                            {
                                ResponseTarget = "PcpaFile",
                                ChildrenId     = hierarchy.HierarchyId,
                                ItemReference  = response.itemReference,
                                Id             = response.id,
                                Description    = response.description,
                                Severity       = response.severity
                            };
                        }
                    }
                    foreach (var child in pcpaResponseFile.responseHierarchy[0].children)
                    {
                        McpdipChildren rChild = new McpdipChildren
                        {
                            HierarchyId       = hierarchy.HierarchyId,
                            LevelIdentifier   = child.levelIdentifier == "Header" ? "PcpaHeader" : child.levelIdentifier,
                            SectionIDentifier = child.sectionIdentifier
                        };
                        _context.McpdipChildrens.Add(rChild);
                        await _context.SaveChangesAsync();

                        HashSet <int> LineNumbers = new HashSet <int>();
                        if (child.responses.Count > 0)
                        {
                            foreach (var response in child.responses)
                            {
                                McpdipDetail detail = new McpdipDetail
                                {
                                    ResponseTarget = rChild.LevelIdentifier == "Header" ? "PcpaHeader" : rChild.LevelIdentifier,
                                    ChildrenId     = rChild.ChildrenId,
                                    ItemReference  = response.itemReference,
                                    Id             = response.id,
                                    Description    = response.description,
                                    Severity       = response.severity
                                };
                                if (rChild.LevelIdentifier != "Header" && slog != null)
                                {
                                    detail.OriginalTable = "History.PcpAssignment";
                                    int RecordNumber = -1;
                                    if (!int.TryParse(response.itemReference.Split('[', ']')[1], out RecordNumber))
                                    {
                                        RecordNumber = -1;
                                    }
                                    detail.OriginalHeaderId = header.PcpHeaderId;
                                    if (RecordNumber >= 0)
                                    {
                                        detail.OriginalId = pcpaPointer + RecordNumber;
                                        PcpAssignment assignment = _contextHistory.PcpAssignments.Find(detail.OriginalId);
                                        if (assignment != null)
                                        {
                                            detail.OriginalCin    = assignment.Cin;
                                            detail.OriginalItemId = assignment.Npi;
                                        }
                                        if (detail.Severity == "Error" && !LineNumbers.Contains(RecordNumber))
                                        {
                                            LineNumbers.Add(RecordNumber);
                                        }
                                    }
                                }
                                _context.McpdipDetails.Add(detail);
                            }
                            await _context.SaveChangesAsync();

                            if (slog != null)
                            {
                                slog.TotalPCPARejected = LineNumbers.Count();
                                slog.TotalPCPAAccepted = slog.TotalPCPASubmitted - slog.TotalPCPARejected;
                                slog.UpdateDate        = DateTime.Now;
                                slog.UpdateBy          = User.Identity.Name;
                                await _contextLog.SaveChangesAsync();
                            }
                        }
                    }
                }
                else if (fileName.ToUpper().Contains("MCPD"))
                {
                    ResponseFile mcpdResponseFile = new ResponseFile();

                    mcpdResponseFile.responseHierarchy = new List <ResponseHierarchy>();
                    mcpdResponseFile.responseHierarchy.Add(new ResponseHierarchy {
                        levelIdentifier = "File", sectionIdentifier = null, responses = new List <ResponseDetail>(), children = new List <ResponseChildren>()
                    });

                    mcpdResponseFile.responseHierarchy[0].children.Add(new ResponseChildren {
                        levelIdentifier = "Header", sectionIdentifier = null, responses = new List <ResponseDetail>()
                    });
                    mcpdResponseFile.responseHierarchy[0].children.Add(new ResponseChildren {
                        levelIdentifier = "Grievances", sectionIdentifier = null, responses = new List <ResponseDetail>()
                    });
                    mcpdResponseFile.responseHierarchy[0].children.Add(new ResponseChildren {
                        levelIdentifier = "Appeals", sectionIdentifier = null, responses = new List <ResponseDetail>()
                    });
                    mcpdResponseFile.responseHierarchy[0].children.Add(new ResponseChildren {
                        levelIdentifier = "ContinuityOfCare", sectionIdentifier = null, responses = new List <ResponseDetail>()
                    });
                    mcpdResponseFile.responseHierarchy[0].children.Add(new ResponseChildren {
                        levelIdentifier = "OutOfNetwork", sectionIdentifier = null, responses = new List <ResponseDetail>()
                    });


                    string ss2 = System.IO.File.ReadAllText(Path.Combine(model.FilePath, fileName));
                    mcpdResponseFile = JsonLib.JsonDeserialize.DeserializeReponseFile(ref ss2);
                    //check if it's test file or production file
                    SubmissionLog slog = _contextLog.SubmissionLogs.FirstOrDefault(x => x.FileName == mcpdResponseFile.fileName);
                    long          grievancePointer = 0, appealPointer = 0, cocPointer = 0, oonPointer = 0;
                    McpdHeader    header = null;
                    if (slog != null)
                    {
                        header           = _contextHistory.McpdHeaders.FirstOrDefault(x => x.ReportingPeriod.Substring(0, 6) == slog.RecordYear + slog.RecordMonth);
                        grievancePointer = _contextHistory.Grievances.Where(x => x.McpdHeaderId == header.McpdHeaderId).Min(x => x.McpdGrievanceId);
                        appealPointer    = _contextHistory.Appeals.Where(x => x.McpdHeaderId == header.McpdHeaderId).Min(x => x.McpdAppealId);
                        cocPointer       = _contextHistory.McpdContinuityOfCare.Where(x => x.McpdHeaderId == header.McpdHeaderId).Min(x => x.McpdContinuityOfCareId);
                        oonPointer       = _contextHistory.McpdOutOfNetwork.Where(x => x.McpdHeaderId == header.McpdHeaderId).Min(x => x.McpdOutOfNetworkId);
                    }
                    McpdipHeader rHeader = new McpdipHeader
                    {
                        FileName         = mcpdResponseFile.fileName,
                        FileType         = mcpdResponseFile.fileType,
                        SubmitterName    = mcpdResponseFile.submitterName,
                        SubmissionDate   = mcpdResponseFile.submissionDate,
                        ValidationStatus = mcpdResponseFile.validationStatus,
                        Levels           = mcpdResponseFile.levels,
                        SchemaVersion    = mcpdResponseFile.schemaVersion
                    };
                    if (slog != null)
                    {
                        rHeader.RecordYear  = slog.RecordYear;
                        rHeader.RecordMonth = slog.RecordMonth;
                    }
                    else
                    {
                        rHeader.RecordYear  = _contextStaging.McpdHeaders.First().ReportingPeriod.Substring(0, 4);
                        rHeader.RecordMonth = _contextStaging.McpdHeaders.First().ReportingPeriod.Substring(4, 2);
                    }
                    _context.McpdipHeaders.Add(rHeader);
                    await _context.SaveChangesAsync();

                    McpdipHierarchy hierarchy = new McpdipHierarchy
                    {
                        HeaderId          = rHeader.HeaderId,
                        LevelIdentifier   = mcpdResponseFile.responseHierarchy[0].levelIdentifier,
                        SectionIdentifier = mcpdResponseFile.responseHierarchy[0].sectionIdentifier
                    };
                    _context.McpdipHierarchies.Add(hierarchy);
                    await _context.SaveChangesAsync();

                    if (mcpdResponseFile.responseHierarchy[0].responses.Count > 0)
                    {
                        foreach (var response in mcpdResponseFile.responseHierarchy[0].responses)
                        {
                            McpdipDetail detail = new McpdipDetail
                            {
                                ResponseTarget = "McpdFile",
                                ChildrenId     = hierarchy.HierarchyId,
                                ItemReference  = response.itemReference,
                                Id             = response.id,
                                Description    = response.description,
                                Severity       = response.severity
                            };
                        }
                    }
                    HashSet <int> LineNumberG = new HashSet <int>();
                    HashSet <int> LineNumberA = new HashSet <int>();
                    HashSet <int> LineNumberC = new HashSet <int>();
                    HashSet <int> LineNumberO = new HashSet <int>();
                    foreach (var child in mcpdResponseFile.responseHierarchy[0].children)
                    {
                        McpdipChildren rChild = new McpdipChildren
                        {
                            HierarchyId       = hierarchy.HierarchyId,
                            LevelIdentifier   = child.levelIdentifier == "Header" ? "McpdHeader" : child.levelIdentifier,
                            SectionIDentifier = child.sectionIdentifier
                        };
                        _context.McpdipChildrens.Add(rChild);
                        await _context.SaveChangesAsync();

                        if (child.responses.Count > 0)
                        {
                            foreach (var response in child.responses)
                            {
                                McpdipDetail detail = new McpdipDetail
                                {
                                    ResponseTarget = rChild.LevelIdentifier == "Header" ? "McpdHeader" : rChild.LevelIdentifier,
                                    ChildrenId     = rChild.ChildrenId,
                                    ItemReference  = response.itemReference,
                                    Id             = response.id,
                                    Description    = response.description,
                                    Severity       = response.severity
                                };
                                if (rChild.LevelIdentifier != "Header" && slog != null)
                                {
                                    int RecordNumber = -1;
                                    if (!int.TryParse(response.itemReference.Split('[', ']')[1], out RecordNumber))
                                    {
                                        RecordNumber = -1;
                                    }
                                    detail.OriginalHeaderId = header.McpdHeaderId;
                                    switch (rChild.LevelIdentifier)
                                    {
                                    case "Grievances":
                                        detail.OriginalTable = "History.McpdGrievance";
                                        if (RecordNumber >= 0)
                                        {
                                            detail.OriginalId = grievancePointer + RecordNumber;
                                            McpdGrievance grievance = _contextHistory.Grievances.Find(detail.OriginalId);
                                            if (grievance != null)
                                            {
                                                detail.OriginalCin    = grievance.Cin;
                                                detail.OriginalItemId = grievance.GrievanceId;
                                            }
                                            if (detail.Severity == "Error" && !LineNumberG.Contains(RecordNumber))
                                            {
                                                LineNumberG.Add(RecordNumber);
                                            }
                                        }
                                        break;

                                    case "Appeals":
                                        detail.OriginalTable = "History.McpdAppeal";
                                        if (RecordNumber >= 0)
                                        {
                                            detail.OriginalId = appealPointer + RecordNumber;
                                            McpdAppeal appeal = _contextHistory.Appeals.Find(detail.OriginalId);
                                            if (appeal != null)
                                            {
                                                detail.OriginalCin    = appeal.Cin;
                                                detail.OriginalItemId = appeal.AppealId;
                                            }
                                            if (detail.Severity == "Error" && !LineNumberA.Contains(RecordNumber))
                                            {
                                                LineNumberA.Add(RecordNumber);
                                            }
                                        }
                                        break;

                                    case "ContinuityOfCare":
                                        detail.OriginalTable = "History.McpdContinuityOfCare";
                                        if (RecordNumber >= 0)
                                        {
                                            detail.OriginalId = cocPointer + RecordNumber;
                                            McpdContinuityOfCare coc = _contextHistory.McpdContinuityOfCare.Find(detail.OriginalId);
                                            if (coc != null)
                                            {
                                                detail.OriginalCin    = coc.Cin;
                                                detail.OriginalItemId = coc.CocId;
                                            }
                                            if (detail.Severity == "Error" && !LineNumberC.Contains(RecordNumber))
                                            {
                                                LineNumberC.Add(RecordNumber);
                                            }
                                        }
                                        break;

                                    case "OutOfNetwork":
                                        detail.OriginalTable = "History.McpdOutOfNetwork";
                                        if (RecordNumber >= 0)
                                        {
                                            detail.OriginalId = oonPointer + RecordNumber;
                                            McpdOutOfNetwork oon = _contextHistory.McpdOutOfNetwork.Find(detail.OriginalId);
                                            if (oon != null)
                                            {
                                                detail.OriginalCin    = oon.Cin;
                                                detail.OriginalItemId = oon.OonId;
                                            }
                                            if (detail.Severity == "Error" && !LineNumberO.Contains(RecordNumber))
                                            {
                                                LineNumberO.Add(RecordNumber);
                                            }
                                        }
                                        break;
                                    }
                                }
                                _context.McpdipDetails.Add(detail);
                            }
                            await _context.SaveChangesAsync();

                            if (slog != null)
                            {
                                slog.TotalGrievanceRejected = LineNumberG.Count();
                                slog.TotalGrievanceAccepted = slog.TotalGrievanceSubmitted - slog.TotalGrievanceRejected;
                                slog.TotalAppealRejected    = LineNumberA.Count();
                                slog.TotalAppealAccepted    = slog.TotalAppealSubmitted - slog.TotalAppealRejected;
                                slog.TotalCOCRejected       = LineNumberC.Count();
                                slog.TotalCOCAccepted       = slog.TotalCOCSubmitted - slog.TotalCOCRejected;
                                slog.TotalOONRejected       = LineNumberO.Count();
                                slog.TotalOONAccepted       = slog.TotalOONSubmitted - slog.TotalOONRejected;
                                slog.UpdateDate             = DateTime.Now;
                                slog.UpdateBy = User.Identity.Name;
                                await _contextLog.SaveChangesAsync();
                            }
                        }
                    }
                }
                System.IO.File.Move(Path.Combine(model.FilePath, fileName), Path.Combine(model.ArchivePath, fileName));
            }
            model.Message = "Load Response files successful";
            return(View(model));
        }
Beispiel #20
0
        public async Task Handle(DeviceOffLineIntegrationEvent @event)
        {
#if DEBUG
            Console.WriteLine("收到警报消息:{0}", @event.Alarm.Description);
#endif
            _db.AlarmLogs.Add(new Model.AlarmLog()
            {
                Id                  = @event.Alarm.LogId,
                DeviceId            = @event.DeviceId,
                EquipNum            = @event.EquipNum,
                AlarmCode           = @event.Alarm.AlarmCode,
                AlarmName           = @event.Alarm.AlarmName,
                GroupName           = @event.Alarm.GroupName,
                AlarmType           = @event.Alarm.AlarmType,
                AlarmFrom           = @event.Alarm.AlarmFrom,
                TargetCode          = @event.Alarm.TargetCode,
                AlarmLevel          = @event.Alarm.AlarmLevel,
                AlarmStatus         = @event.Alarm.AlarmStatus,
                AlarmingDescription = @event.Alarm.Description,
                RepairTime          = @event.Alarm.RepairTime,
                AlarmTime           = @event.Alarm.AlarmTime,
                IsClear             = false,
                CreationTime        = @event.CreationDate,
                IsStatistics        = @event.Alarm.IsStatistics,
                RealData            = @event.Alarm.RealData,
                UpperLimit          = @event.Alarm.UpperLimit,
                LowerLimit          = @event.Alarm.LowerLimit
            });
            var device = await _db.Devices.FirstOrDefaultAsync(where => where.EquipNum == @event.EquipNum);

            if (device == null)
            {
                _db.Devices.Add(new Model.Device()
                {
                    Id             = @event.DeviceId,
                    DeviceName     = @event.DeviceName,
                    DeviceTypeCode = @event.DeviceTypeCode,
                    ModelCode      = @event.ModelCode,
                    EquipNum       = @event.EquipNum,
                    RegionId       = @event.RegionId,
                    RegionCode     = @event.RegionCode,
                    RegionName     = @event.RegionName,
                    TentantId      = @event.TentantId,
                    TentantName    = @event.TentantName,
                    ParentId       = @event.ParentId
                });
            }
            else
            {
                device.Id             = @event.DeviceId;
                device.DeviceName     = @event.DeviceName;
                device.DeviceTypeCode = @event.DeviceTypeCode;
                device.ModelCode      = @event.ModelCode;
                device.EquipNum       = @event.EquipNum;
                device.RegionId       = @event.RegionId;
                device.RegionCode     = @event.RegionCode;
                device.RegionName     = @event.RegionName;
                device.TentantId      = @event.TentantId;
                device.TentantName    = @event.TentantName;
                device.ParentId       = @event.ParentId;
            }

            await _db.SaveChangesAsync();
        }
Beispiel #21
0
        public async Task LogInDB(Log log)
        {
            await context.Logs.AddAsync(log);

            await context.SaveChangesAsync();
        }
Beispiel #22
0
 public async Task AddAsync(EventLog log)
 {
     _context.EventLog.Add(log);
     await _context.SaveChangesAsync();
 }
Beispiel #23
0
        public async Task DoWorkAsync()
        {
            _context.Database.OpenConnection();
            _context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.S3Buckets ON");
            ListBucketsResponse listBucketResponse = await _S3Client.ListBucketsAsync(new ListBucketsRequest());

            bool sageMakerBucketFound = false, apacheWebLogBucketFound = false, SSHLogBucketFound = false, windowsSecurityLogBucketFound = false, squidProxyLogBucketFound = false;

            foreach (var bucket in listBucketResponse.Buckets)
            {
                if (bucket.BucketName.Equals("master-sagemaker-data"))
                {
                    sageMakerBucketFound = true;
                    if (_context.S3Buckets.Find(1) == null)
                    {
                        _context.S3Buckets.Add(new Models.S3Bucket
                        {
                            ID   = 1,
                            Name = "master-sagemaker-data"
                        });
                    }
                }
                else if (bucket.BucketName.Equals("smartinsights-test-website"))
                {
                    apacheWebLogBucketFound = true;
                    if (_context.S3Buckets.Find(2) == null)
                    {
                        _context.S3Buckets.Add(new Models.S3Bucket
                        {
                            ID   = 2,
                            Name = "smartinsights-test-website"
                        });
                    }
                }
                else if (bucket.BucketName.Equals("smartinsights-ssh-logs"))
                {
                    SSHLogBucketFound = true;
                    if (_context.S3Buckets.Find(3) == null)
                    {
                        _context.S3Buckets.Add(new Models.S3Bucket
                        {
                            ID   = 3,
                            Name = "smartinsights-ssh-logs"
                        });
                    }
                }
                else if (bucket.BucketName.Equals("smartinsights-windows-security-logs"))
                {
                    windowsSecurityLogBucketFound = true;
                    if (_context.S3Buckets.Find(4) == null)
                    {
                        _context.S3Buckets.Add(new Models.S3Bucket
                        {
                            ID   = 4,
                            Name = "smartinsights-windows-security-logs"
                        });
                    }
                }
                else if (bucket.BucketName.Equals("smartinsights-squid-proxy-logs"))
                {
                    squidProxyLogBucketFound = true;
                    if (_context.S3Buckets.Find(5) == null)
                    {
                        _context.S3Buckets.Add(new Models.S3Bucket
                        {
                            ID   = 5,
                            Name = "smartinsights-squid-proxy-logs"
                        });
                    }
                }
                if (sageMakerBucketFound && apacheWebLogBucketFound && SSHLogBucketFound && windowsSecurityLogBucketFound && squidProxyLogBucketFound)
                {
                    break;
                }
            }
            if (!sageMakerBucketFound && _context.S3Buckets.Find(2) == null)
            {
                PutBucketResponse putBucketResponse2 = await _S3Client.PutBucketAsync(new PutBucketRequest
                {
                    BucketName      = "master-sagemaker-data",
                    UseClientRegion = true,
                    CannedACL       = S3CannedACL.Private
                });

                PutBucketTaggingResponse putBucketTaggingResponse2 = await _S3Client.PutBucketTaggingAsync(new PutBucketTaggingRequest
                {
                    BucketName = "master-sagemaker-data",
                    TagSet     = new List <Tag>
                    {
                        new Tag
                        {
                            Key   = "Project",
                            Value = "OSPJ"
                        }
                    }
                });

                PutPublicAccessBlockResponse putPublicAccessBlockResponse2 = await _S3Client.PutPublicAccessBlockAsync(new PutPublicAccessBlockRequest
                {
                    BucketName = "master-sagemaker-data",
                    PublicAccessBlockConfiguration = new PublicAccessBlockConfiguration
                    {
                        BlockPublicAcls       = true,
                        BlockPublicPolicy     = true,
                        IgnorePublicAcls      = true,
                        RestrictPublicBuckets = true
                    }
                });

                if (putBucketResponse2.HttpStatusCode.Equals(HttpStatusCode.OK) && putPublicAccessBlockResponse2.HttpStatusCode.Equals(HttpStatusCode.OK))
                {
                    _context.S3Buckets.Add(new Models.S3Bucket
                    {
                        ID   = 1,
                        Name = "master-sagemaker-data"
                    });
                }
            }
            if (!apacheWebLogBucketFound && _context.S3Buckets.Find(3) == null)
            {
                PutBucketResponse putBucketResponse3 = await _S3Client.PutBucketAsync(new PutBucketRequest
                {
                    BucketName      = "smartinsights-test-website",
                    UseClientRegion = true,
                    CannedACL       = S3CannedACL.Private
                });

                PutBucketTaggingResponse putBucketTaggingResponse3 = await _S3Client.PutBucketTaggingAsync(new PutBucketTaggingRequest
                {
                    BucketName = "smartinsights-test-website",
                    TagSet     = new List <Tag>
                    {
                        new Tag
                        {
                            Key   = "Project",
                            Value = "OSPJ"
                        }
                    }
                });

                PutPublicAccessBlockResponse putPublicAccessBlockResponse3 = await _S3Client.PutPublicAccessBlockAsync(new PutPublicAccessBlockRequest
                {
                    BucketName = "smartinsights-test-website",
                    PublicAccessBlockConfiguration = new PublicAccessBlockConfiguration
                    {
                        BlockPublicAcls       = true,
                        BlockPublicPolicy     = true,
                        IgnorePublicAcls      = true,
                        RestrictPublicBuckets = true
                    }
                });

                if (putBucketResponse3.HttpStatusCode.Equals(HttpStatusCode.OK) && putPublicAccessBlockResponse3.HttpStatusCode.Equals(HttpStatusCode.OK))
                {
                    _context.S3Buckets.Add(new Models.S3Bucket
                    {
                        ID   = 2,
                        Name = "smartinsights-apache-web-logs"
                    });
                }
            }
            if (!SSHLogBucketFound && _context.S3Buckets.Find(4) == null)
            {
                PutBucketResponse putBucketResponse4 = await _S3Client.PutBucketAsync(new PutBucketRequest
                {
                    BucketName      = "smartinsights-ssh-logs",
                    UseClientRegion = true,
                    CannedACL       = S3CannedACL.Private
                });

                PutBucketTaggingResponse putBucketTaggingResponse4 = await _S3Client.PutBucketTaggingAsync(new PutBucketTaggingRequest
                {
                    BucketName = "smartinsights-ssh-logs",
                    TagSet     = new List <Tag>
                    {
                        new Tag
                        {
                            Key   = "Project",
                            Value = "OSPJ"
                        }
                    }
                });

                PutPublicAccessBlockResponse putPublicAccessBlockResponse4 = await _S3Client.PutPublicAccessBlockAsync(new PutPublicAccessBlockRequest
                {
                    BucketName = "smartinsights-ssh-logs",
                    PublicAccessBlockConfiguration = new PublicAccessBlockConfiguration
                    {
                        BlockPublicAcls       = true,
                        BlockPublicPolicy     = true,
                        IgnorePublicAcls      = true,
                        RestrictPublicBuckets = true
                    }
                });

                if (putBucketResponse4.HttpStatusCode.Equals(HttpStatusCode.OK) && putPublicAccessBlockResponse4.HttpStatusCode.Equals(HttpStatusCode.OK))
                {
                    _context.S3Buckets.Add(new Models.S3Bucket
                    {
                        ID   = 3,
                        Name = "smartinsights-ssh-logs"
                    });
                }
            }
            if (!windowsSecurityLogBucketFound && _context.S3Buckets.Find(5) == null)
            {
                PutBucketResponse putBucketResponse5 = await _S3Client.PutBucketAsync(new PutBucketRequest
                {
                    BucketName      = "smartinsights-windows-security-logs",
                    UseClientRegion = true,
                    CannedACL       = S3CannedACL.Private
                });

                PutBucketTaggingResponse putBucketTaggingResponse5 = await _S3Client.PutBucketTaggingAsync(new PutBucketTaggingRequest
                {
                    BucketName = "smartinsights-windows-security-logs",
                    TagSet     = new List <Tag>
                    {
                        new Tag
                        {
                            Key   = "Project",
                            Value = "OSPJ"
                        }
                    }
                });

                PutPublicAccessBlockResponse putPublicAccessBlockResponse5 = await _S3Client.PutPublicAccessBlockAsync(new PutPublicAccessBlockRequest
                {
                    BucketName = "smartinsights-windows-security-logs",
                    PublicAccessBlockConfiguration = new PublicAccessBlockConfiguration
                    {
                        BlockPublicAcls       = true,
                        BlockPublicPolicy     = true,
                        IgnorePublicAcls      = true,
                        RestrictPublicBuckets = true
                    }
                });

                if (putBucketResponse5.HttpStatusCode.Equals(HttpStatusCode.OK) && putPublicAccessBlockResponse5.HttpStatusCode.Equals(HttpStatusCode.OK))
                {
                    _context.S3Buckets.Add(new Models.S3Bucket
                    {
                        ID   = 4,
                        Name = "smartinsights-windows-security-logs"
                    });
                }
            }
            if (!squidProxyLogBucketFound && _context.S3Buckets.Find(6) == null)
            {
                PutBucketResponse putBucketResponse6 = await _S3Client.PutBucketAsync(new PutBucketRequest
                {
                    BucketName      = "smartinsights-squid-proxy-logs",
                    UseClientRegion = true,
                    CannedACL       = S3CannedACL.Private
                });

                PutBucketTaggingResponse putBucketTaggingResponse6 = await _S3Client.PutBucketTaggingAsync(new PutBucketTaggingRequest
                {
                    BucketName = "smartinsights-squid-proxy-logs",
                    TagSet     = new List <Tag>
                    {
                        new Tag
                        {
                            Key   = "Project",
                            Value = "OSPJ"
                        }
                    }
                });

                PutPublicAccessBlockResponse putPublicAccessBlockResponse6 = await _S3Client.PutPublicAccessBlockAsync(new PutPublicAccessBlockRequest
                {
                    BucketName = "smartinsights-squid-proxy-logs",
                    PublicAccessBlockConfiguration = new PublicAccessBlockConfiguration
                    {
                        BlockPublicAcls       = true,
                        BlockPublicPolicy     = true,
                        IgnorePublicAcls      = true,
                        RestrictPublicBuckets = true
                    }
                });

                if (putBucketResponse6.HttpStatusCode.Equals(HttpStatusCode.OK) && putPublicAccessBlockResponse6.HttpStatusCode.Equals(HttpStatusCode.OK))
                {
                    _context.S3Buckets.Add(new Models.S3Bucket
                    {
                        ID   = 5,
                        Name = "smartinsights-squid-proxy-logs"
                    });
                }
            }
            await _context.SaveChangesAsync();

            _context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.S3Buckets OFF");
            _context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.GlueDatabases ON");
            try
            {
                GetDatabaseResponse getDatabaseResponse = await _GlueClient.GetDatabaseAsync(new GetDatabaseRequest
                {
                    Name = "master-database"
                });

                if (_context.GlueDatabases.Find(1) == null)
                {
                    _context.GlueDatabases.Add(new Models.GlueDatabase
                    {
                        ID   = 1,
                        Name = "master-database"
                    });
                }
            }
            catch (EntityNotFoundException)
            {
                CreateDatabaseResponse createDatabaseResponse = await _GlueClient.CreateDatabaseAsync(new CreateDatabaseRequest
                {
                    DatabaseInput = new DatabaseInput
                    {
                        Name = "master-database"
                    }
                });

                if (createDatabaseResponse.HttpStatusCode.Equals(HttpStatusCode.OK))
                {
                    _context.GlueDatabases.Add(new Models.GlueDatabase
                    {
                        ID   = 1,
                        Name = "master-database"
                    });
                }
            }
            finally
            {
                await _context.SaveChangesAsync();

                _context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.GlueDatabases OFF");
            }
            GetConnectionsResponse getConnectionsResponse = await _GlueClient.GetConnectionsAsync(new GetConnectionsRequest
            {
                HidePassword = false
            });

            bool GlueDBConnectionNameMatch = false, GlueDBConnectionParamtetersMatch = false;

            foreach (Connection c in getConnectionsResponse.ConnectionList)
            {
                if (c.Name.Equals(Environment.GetEnvironmentVariable("GLUE_DB-CONNECTION_NAME")))
                {
                    GlueDBConnectionNameMatch = true;
                }
                c.ConnectionProperties.TryGetValue("JDBC_CONNECTION_URL", out string DBHost);
                c.ConnectionProperties.TryGetValue("USERNAME", out string DBUserName);
                c.ConnectionProperties.TryGetValue("PASSWORD", out string DBPassword);
                if (DBHost.Contains(Environment.GetEnvironmentVariable("RDS_HOSTNAME")) && DBUserName.Equals(Environment.GetEnvironmentVariable("RDS_USERNAME")) && DBPassword.Equals(Environment.GetEnvironmentVariable("RDS_PASSWORD")))
                {
                    GlueDBConnectionParamtetersMatch = true;
                }
                if (GlueDBConnectionNameMatch && GlueDBConnectionParamtetersMatch)
                {
                    break;
                }
            }
            if (!GlueDBConnectionParamtetersMatch)
            {
                if (GlueDBConnectionNameMatch)
                {
                    DeleteConnectionResponse deleteConnectionResponse = await _GlueClient.DeleteConnectionAsync(new DeleteConnectionRequest
                    {
                        ConnectionName = Environment.GetEnvironmentVariable("GLUE_DB-CONNECTION_NAME")
                    });

                    if (deleteConnectionResponse.HttpStatusCode.Equals(HttpStatusCode.OK))
                    {
                        await _GlueClient.CreateConnectionAsync(new CreateConnectionRequest
                        {
                            ConnectionInput = new ConnectionInput
                            {
                                ConnectionProperties = new Dictionary <string, string>()
                                {
                                    { "JDBC_CONNECTION_URL", "jdbc:sqlserver://" + Environment.GetEnvironmentVariable("RDS_HOSTNAME") + ":" + Environment.GetEnvironmentVariable("RDS_PORT") + ";databaseName=" + Environment.GetEnvironmentVariable("GLUE_INGESTION-DB_NAME") },
                                    { "JDBC_ENFORCE_SSL", "false" },
                                    { "USERNAME", Environment.GetEnvironmentVariable("RDS_USERNAME") },
                                    { "PASSWORD", Environment.GetEnvironmentVariable("RDS_PASSWORD") },
                                },
                                ConnectionType = ConnectionType.JDBC,
                                Name           = Environment.GetEnvironmentVariable("GLUE_DB-CONNECTION_NAME"),
                                PhysicalConnectionRequirements = new PhysicalConnectionRequirements
                                {
                                    AvailabilityZone    = "ap-southeast-1c",
                                    SubnetId            = "subnet-0daa6ec8e25a13077",
                                    SecurityGroupIdList = new List <string>
                                    {
                                        "sg-0e1e79f6d49b3ed11"
                                    }
                                }
                            }
                        });
                    }
                }
                else
                {
                    await _GlueClient.CreateConnectionAsync(new CreateConnectionRequest
                    {
                        ConnectionInput = new ConnectionInput
                        {
                            ConnectionProperties = new Dictionary <string, string>()
                            {
                                { "JDBC_CONNECTION_URL", "jdbc:sqlserver://" + Environment.GetEnvironmentVariable("RDS_HOSTNAME") + ":" + Environment.GetEnvironmentVariable("RDS_PORT") + ";databaseName=" + Environment.GetEnvironmentVariable("GLUE_INGESTION-DB_NAME") },
                                { "JDBC_ENFORCE_SSL", "false" },
                                { "USERNAME", Environment.GetEnvironmentVariable("RDS_USERNAME") },
                                { "PASSWORD", Environment.GetEnvironmentVariable("RDS_PASSWORD") },
                            },
                            ConnectionType = ConnectionType.JDBC,
                            Name           = Environment.GetEnvironmentVariable("GLUE_DB-CONNECTION_NAME"),
                            PhysicalConnectionRequirements = new PhysicalConnectionRequirements
                            {
                                AvailabilityZone    = "ap-southeast-1c",
                                SubnetId            = "subnet-0daa6ec8e25a13077",
                                SecurityGroupIdList = new List <string>
                                {
                                    "sg-0e1e79f6d49b3ed11"
                                }
                            }
                        }
                    });
                }
            }
            if (!_context.LogInputs.Any())
            {
                _context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.LogInputs ON");
                _context.LogInputs.Add(new Models.LogInput
                {
                    ID   = 1,
                    Name = "Test Website",
                    FirehoseStreamName = "SmartInsights-Test-Website",
                    ConfigurationJSON  = "{\r\n  \"cloudwatch.emitMetrics\": false,\r\n  \"awsSecretAccessKey\": \"XW2HNGQnW9ygpvPDzQQemY0AhsFlUGwiKnVpZGbO\",\r\n  \"firehose.endpoint\": \"firehose.ap-southeast-1.amazonaws.com\",\r\n  \"awsAccessKeyId\": \"AKIASXW25GZQH5IABE4P\",\r\n  \"flows\": [\r\n   {\r\n      \"filePattern\": \"/var/www/example.hansen-lim.me/log/access.log\",\r\n      \"deliveryStream\": \"SmartInsights-Test-Website\",\r\n      \"dataProcessingOptions\": [\r\n                {\r\n                    \"optionName\": \"LOGTOJSON\",\r\n                    \"logFormat\": \"COMBINEDAPACHELOG\"\r\n                }\r\n  ]\r\n}",
                    LogInputCategory   = Models.LogInputCategory.ApacheWebServer,
                    LinkedUserID       = 1,
                    LinkedS3BucketID   = _context.S3Buckets.Find(2).ID,
                    LinkedS3Bucket     = _context.S3Buckets.Find(2),
                    InitialIngest      = true
                });
                _context.LogInputs.Add(new Models.LogInput
                {
                    ID   = 2,
                    Name = "Linux SSH Server Logs",
                    FirehoseStreamName = "SmartInsights-SSH-Login-Logs",
                    ConfigurationJSON  = "{\r\n  \"cloudwatch.emitMetrics\": false,\r\n  \"awsSecretAccessKey\": \"XW2HNGQnW9ygpvPDzQQemY0AhsFlUGwiKnVpZGbO\",\r\n  \"firehose.endpoint\": \"firehose.ap-southeast-1.amazonaws.com\",\r\n  \"awsAccessKeyId\": \"AKIASXW25GZQH5IABE4P\",\r\n  \"flows\": [\r\n  {\r\n      \"filePattern\": \"/opt/log/www1/secure.log\",\r\n      \"deliveryStream\": \"SmartInsights-SSH-Login-Logs\",\r\n      \"dataProcessingOptions\": [\r\n                {\r\n                    \"optionName\": \"LOGTOJSON\",\r\n                    \"logFormat\": \"SYSLOG\",\r\n                    \"matchPattern\": \"^([\\\\w]+) ([\\\\w]+) ([\\\\d]+) ([\\\\d]+) ([\\\\w:]+) ([\\\\w]+) ([\\\\w]+)\\\\[([\\\\d]+)\\\\]\\\\: ([\\\\w\\\\s.\\\\:=]+)$\",\r\n                    \"customFieldNames\": [\"weekday\", \"month\", \"day\", \"year\", \"time\", \"host\", \"process\", \"identifer\",\"message\"]\r\n    }\r\n  ]\r\n}",
                    LogInputCategory   = Models.LogInputCategory.SSH,
                    LinkedUserID       = 1,
                    LinkedS3BucketID   = _context.S3Buckets.Find(3).ID,
                    LinkedS3Bucket     = _context.S3Buckets.Find(3),
                    InitialIngest      = true
                });
                _context.LogInputs.Add(new Models.LogInput
                {
                    ID   = 3,
                    Name = "Windows Security Events",
                    FirehoseStreamName = "SmartInsights-Windows-Security-Logs",
                    ConfigurationJSON  = "{ \r\n   \"Sources\":[ \r\n      { \r\n         \"Id\":\"" + "WinSecurityLog" + "\",\r\n         \"SourceType\":\"WindowsEventLogSource\",\r\n  \"LogName\":\" " + "Security" + " \"\r\n         \"IncludeEventData\" : true\r\n            }\r\n   ],\r\n   \"Sinks\":[ \r\n      { \r\n         \"Id\":\"WinSecurityKinesisFirehose\",\r\n         \"SinkType\":\"KinesisFirehose\",\r\n         \"AccessKey\":\"" + "AKIASXW25GZQH5IABE4P" + "\",\r\n         \"SecretKey\":\"" + "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" + "\",\r\n         \"Region\":\"ap-southeast-1\",\r\n         \"StreamName\":\"" + "SmartInsights-Windows-Security-Logs" + "\"\r\n         \"Format\": \"json\"\r\n      }\r\n   ],\r\n   \"Pipes\":[ \r\n      { \r\n         \"Id\":\"WinSecurityPipe\",\r\n         \"SourceRef\":\"WinSecurityLog\",\r\n         \"SinkRef\":\"WinSecurityKinesisFirehose\"\r\n      }\r\n   ],\r\n   \"SelfUpdate\":0\r\n}",
                    LogInputCategory   = Models.LogInputCategory.WindowsEventLogs,
                    LinkedUserID       = 1,
                    LinkedS3BucketID   = _context.S3Buckets.Find(4).ID,
                    LinkedS3Bucket     = _context.S3Buckets.Find(4),
                    InitialIngest      = true
                });
                _context.LogInputs.Add(new Models.LogInput
                {
                    ID   = 4,
                    Name = "Squid Proxy Server",
                    FirehoseStreamName = "SmartInsights-Cisco-Squid-Proxy-Logs",
                    ConfigurationJSON  = "{\r\n  \"cloudwatch.emitMetrics\": false,\r\n  \"awsSecretAccessKey\": \"XW2HNGQnW9ygpvPDzQQemY0AhsFlUGwiKnVpZGbO\",\r\n  \"firehose.endpoint\": \"firehose.ap-southeast-1.amazonaws.com\",\r\n  \"awsAccessKeyId\": \"AKIASXW25GZQH5IABE4P\",\r\n  \"flows\": [\r\n  {\r\n      \"filePattern\": \"/opt/log/cisco_router1/cisco_ironport_web.log\",\r\n      \"deliveryStream\": \"SmartInsights-Cisco-Squid-Proxy-Logs\",\r\n      \"dataProcessingOptions\": [\r\n                {\r\n                    \"optionName\": \"LOGTOJSON\",\r\n                    \"logFormat\": \"SYSLOG\",\r\n                    \"matchPattern\": \"^([\\\\w.]+) (?:[\\\\d]+) ([\\\\d.]+) ([\\\\w]+)\\\\/([\\\\d]+) ([\\\\d]+) ([\\\\w.]+) ([\\\\S]+) ([\\\\S]+) (?:[\\\\w]+)\\\\/([\\\\S]+) ([\\\\S]+) (?:[\\\\S\\\\s]+)$\",\r\n                    \"customFieldNames\": [\"timestamp\",\"destination_ip_address\",\"action\",\"http_status_code\",\"bytes_in\",\"http_method\",\"requested_url\",\"user\",\"requested_url_domain\",\"content_type\"]\r\n                }\r\n            ]\r\n    }\r\n  ]\r\n}",
                    LogInputCategory   = Models.LogInputCategory.SquidProxy,
                    LinkedUserID       = 1,
                    LinkedS3BucketID   = _context.S3Buckets.Find(5).ID,
                    LinkedS3Bucket     = _context.S3Buckets.Find(5),
                    InitialIngest      = true
                });
                await _context.SaveChangesAsync();

                _context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.LogInputs OFF");
                _context.GlueConsolidatedEntities.Add(new Models.GlueConsolidatedEntity
                {
                    CrawlerName      = "Test Website",
                    LinkedLogInputID = _context.LogInputs.Find(1).ID,
                    JobName          = "Test Website"
                });
                _context.GlueConsolidatedEntities.Add(new Models.GlueConsolidatedEntity
                {
                    CrawlerName      = "SSH Logs",
                    LinkedLogInputID = _context.LogInputs.Find(2).ID,
                    JobName          = "SSH Logs"
                });
                _context.GlueConsolidatedEntities.Add(new Models.GlueConsolidatedEntity
                {
                    CrawlerName      = "Windows Security Logs",
                    LinkedLogInputID = _context.LogInputs.Find(3).ID,
                    JobName          = "Windows Security Logs"
                });
                _context.GlueConsolidatedEntities.Add(new Models.GlueConsolidatedEntity
                {
                    CrawlerName      = "Squid Proxy Logs",
                    LinkedLogInputID = _context.LogInputs.Find(4).ID,
                    JobName          = "Squid Proxy Logs"
                });
                _context.AlertTriggers.Add(new Models.Trigger
                {
                    Name                      = "Logins",
                    AlertTriggerType          = Models.AlertTriggerType.IPInsights,
                    CondtionalField           = "request",
                    CondtionType              = "Equal",
                    Condtion                  = "GET /staging HTTP/1.1",
                    IPAddressField            = "host",
                    UserField                 = "authuser",
                    CurrentInputDataKey       = "Test-Website/Input/ipinsights/data-2020-02-11-03-15-42.csv",
                    CurrentModelFileKey       = "Test-Website/Model",
                    CheckpointKey             = "Test-Website/Checkpoint",
                    SagemakerStatus           = Models.SagemakerStatus.Trained,
                    SagemakerErrorStage       = Models.SagemakerErrorStage.None,
                    CurrentModelName          = "Test-WebsiteModel-2020-02-11-03-21-38",
                    TrainingJobName           = "Test-Website-IPInsights-Training-2020-02-11-03-15-42",
                    TrainingJobARN            = "arn:aws:sagemaker:ap-southeast-1:188363912800:training-job/test-website-ipinsights-training-2020-02-11-03-15-42",
                    EndpointConfigurationName = "Test-WebsiteEndpointConfig-2020-02-11-03-21-39",
                    EndpointConfigurationARN  = "arn:aws:sagemaker:ap-southeast-1:188363912800:endpoint-config/test-websiteendpointconfig-2020-02-11-03-21-39",
                    InferenceBookmark         = 13,
                    TrainingBookmark          = 13,
                    LinkedLogInputID          = _context.LogInputs.Find(1).ID
                });
                await _context.SaveChangesAsync();
            }
            _context.Database.CloseConnection();
        }
Beispiel #24
0
 public async Task CommitAsync()
 {
     await _context.SaveChangesAsync();
 }
Beispiel #25
0
        public async Task <IActionResult> Create([Bind("FilePath", "Name", "Filter", "LogType", "LogInputCategory")] LogInput input)
        {
            ViewBag.LogPath  = input.FilePath;
            ViewBag.LogName  = input.Name;
            ViewBag.Filter   = input.Filter;
            ViewBag.LogType  = input.LogType;
            ViewBag.LogInput = input.LogInputCategory;
            string            lowcap            = input.Name.ToLower();
            string            pattern           = @"[^A-Za-z0-9]+";
            string            replacement       = "-";
            string            replace           = Regex.Replace(lowcap, pattern, replacement);
            var               BucketName2       = "smartinsights-" + replace;
            var               data              = "{ \r\n   \"Sources\":[ \r\n      { \r\n         \"Id\":\"" + input.Name + "\",\r\n         \"SourceType\":\"WindowsEventLogSource\",\r\n  \"LogName\":\"" + input.LogType + "\",\r\n         \"IncludeEventData\" : true\r\n            }\r\n   ],\r\n   \"Sinks\":[ \r\n      { \r\n         \"Id\":\"" + input.Name + "Firehose\",\r\n         \"SinkType\":\"KinesisFirehose\",\r\n         \"AccessKey\":\"" + Environment.GetEnvironmentVariable("FIREHOSE_ACCESS_KEY_ID") + "\",\r\n         \"SecretKey\":\"" + Environment.GetEnvironmentVariable("FIREHOSE_SECRET_ACCESS_KEY") + "\",\r\n         \"Region\":\"ap-southeast-1\",\r\n         \"StreamName\":\"" + BucketName2 + "\"\r\n         \"Format\": \"json\"\r\n      }\r\n   ],\r\n   \"Pipes\":[ \r\n      { \r\n         \"Id\":\"WinSecurityPipe\",\r\n         \"SourceRef\":\"" + input.Name + "\",\r\n         \"SinkRef\":\"" + input.Name + "KinesisFirehose\"\r\n      }\r\n   ],\r\n   \"SelfUpdate\":0\r\n}";
            var               data2             = "{\r\n  \"cloudwatch.emitMetrics\": false,\r\n  \"awsSecretAccessKey\": \"" + Environment.GetEnvironmentVariable("FIREHOSE_SECRET_ACCESS_KEY") + "\",\r\n  \"firehose.endpoint\": \"firehose.ap-southeast-1.amazonaws.com\",\r\n  \"awsAccessKeyId\": \"" + Environment.GetEnvironmentVariable("FIREHOSE_ACCESS_KEY_ID") + "\",\r\n  \"flows\": [\r\n    {\r\n      \"filePattern\": \"/opt/generators/CLF/*.log\",\r\n      \"deliveryStream\": \"SmartInsights-Apache-Web-Logs\",\r\n      \"dataProcessingOptions\": [\r\n                {\r\n                    \"optionName\": \"LOGTOJSON\",\r\n                    \"logFormat\": \"COMMONAPACHELOG\"\r\n                }\r\n            ]\r\n    },\r\n    {\r\n      \"filePattern\": \"/opt/generators/ELF/*.log\",\r\n      \"deliveryStream\": \"\",\r\n      \"dataProcessingOptions\": [\r\n                {\r\n                    \"optionName\": \"LOGTOJSON\",\r\n                    \"logFormat\": \"COMBINEDAPACHELOG\"\r\n                }\r\n            ]      \r\n    },\r\n    {\r\n      \"filePattern\": \"/opt/log/www1/secure.log\",\r\n      \"deliveryStream\": \"SmartInsights-SSH-Login-Logs\",\r\n      \"dataProcessingOptions\": [\r\n                {\r\n                    \"optionName\": \"LOGTOJSON\",\r\n                    \"logFormat\": \"SYSLOG\",\r\n                    \"matchPattern\": \"^([\\\\w]+) ([\\\\w]+) ([\\\\d]+) ([\\\\d]+) ([\\\\w:]+) ([\\\\w]+) ([\\\\w]+)\\\\[([\\\\d]+)\\\\]\\\\: ([\\\\w\\\\s.\\\\:=]+)$\",\r\n                    \"customFieldNames\": [\"weekday\", \"month\", \"day\", \"year\", \"time\", \"host\", \"process\", \"identifer\",\"message\"]\r\n                }\r\n            ]\r\n    },\r\n    {\r\n      \"filePattern\": \"/opt/log/cisco_router1/cisco_ironport_web.log\",\r\n      \"deliveryStream\": \"SmartInsights-Cisco-Squid-Proxy-Logs\",\r\n      \"dataProcessingOptions\": [\r\n                {\r\n                    \"optionName\": \"LOGTOJSON\",\r\n                    \"logFormat\": \"SYSLOG\",\r\n                    \"matchPattern\": \"^([\\\\w.]+) (?:[\\\\d]+) ([\\\\d.]+) ([\\\\w]+)\\\\/([\\\\d]+) ([\\\\d]+) ([\\\\w.]+) ([\\\\S]+) ([\\\\S]+) (?:[\\\\w]+)\\\\/([\\\\S]+) ([\\\\S]+) (?:[\\\\S\\\\s]+)$\",\r\n                    \"customFieldNames\": [\"timestamp\",\"destination_ip_address\",\"action\",\"http_status_code\",\"bytes_in\",\"http_method\",\"requested_url\",\"user\",\"requested_url_domain\",\"content_type\"]\r\n                }\r\n            ]\r\n    }\r\n  ]\r\n}";
            string            data3             = "";
            PutBucketResponse putBucketResponse = await _S3Client.PutBucketAsync(new PutBucketRequest
            {
                BucketName      = "smartinsights-" + replace,
                UseClientRegion = true,
                CannedACL       = S3CannedACL.Private
            });

            PutBucketTaggingResponse putBucketTaggingResponse = await _S3Client.PutBucketTaggingAsync(new PutBucketTaggingRequest
            {
                BucketName = "smartinsights-" + replace,
                TagSet     = new List <Amazon.S3.Model.Tag>
                {
                    new Amazon.S3.Model.Tag
                    {
                        Key   = "Project",
                        Value = "OSPJ"
                    }
                }
            });

            PutPublicAccessBlockResponse putPublicAccessBlockResponse = await _S3Client.PutPublicAccessBlockAsync(new PutPublicAccessBlockRequest
            {
                BucketName = "smartinsights-" + replace,
                PublicAccessBlockConfiguration = new PublicAccessBlockConfiguration
                {
                    BlockPublicAcls       = true,
                    BlockPublicPolicy     = true,
                    IgnorePublicAcls      = true,
                    RestrictPublicBuckets = true
                }
            });

            CreateDeliveryStreamResponse createDeliveryStreamResponse = await _FirehoseClient.CreateDeliveryStreamAsync(new CreateDeliveryStreamRequest
            {
                DeliveryStreamName = "smartinsights-" + replace,
                DeliveryStreamType = DeliveryStreamType.DirectPut,
                ExtendedS3DestinationConfiguration = new ExtendedS3DestinationConfiguration
                {
                    BucketARN      = "arn:aws:s3:::" + BucketName2,
                    BufferingHints = new BufferingHints
                    {
                        IntervalInSeconds = 60,
                        SizeInMBs         = 5
                    },
                    RoleARN = Environment.GetEnvironmentVariable("FIREHOSE_EXECUTION_ROLE")
                },
                Tags = new List <Amazon.KinesisFirehose.Model.Tag>
                {
                    new Amazon.KinesisFirehose.Model.Tag
                    {
                        Key   = "Project",
                        Value = "OSPJ"
                    }
                }
            });

            _logContext.S3Buckets.Add(new Models.S3Bucket
            {
                Name = BucketName2
            });
            await _logContext.SaveChangesAsync();

            ClaimsIdentity claimsIdentity  = HttpContext.User.Identity as ClaimsIdentity;
            string         currentIdentity = claimsIdentity.FindFirst("preferred_username").Value;
            User           user            = await _accountContext.Users.Where(u => u.Username == currentIdentity).FirstOrDefaultAsync();

            Models.S3Bucket bucket = await _logContext.S3Buckets.Where(b => b.Name.Equals(BucketName2)).FirstOrDefaultAsync();

            await _logContext.SaveChangesAsync();

            await _LambdaClient.AddPermissionAsync(new AddPermissionRequest
            {
                Action        = "lambda:InvokeFunction",
                FunctionName  = Environment.GetEnvironmentVariable("LAMBDA_FUNCTION_NAME"),
                Principal     = "s3.amazonaws.com",
                SourceAccount = Environment.GetEnvironmentVariable("AWS_ACCOUNT_NUMBER"),
                SourceArn     = "arn:aws:s3:::" + bucket.Name,
                StatementId   = "ID-" + bucket.ID
            });

            await _S3Client.PutBucketNotificationAsync(new PutBucketNotificationRequest
            {
                BucketName = BucketName2,
                LambdaFunctionConfigurations = new List <LambdaFunctionConfiguration>
                {
                    new LambdaFunctionConfiguration
                    {
                        FunctionArn = Environment.GetEnvironmentVariable("LAMBDA_FUNCTION_ARN"),
                        Events      = new List <EventType>
                        {
                            EventType.ObjectCreatedPut
                        }
                    }
                }
            });

            if (!input.LogInputCategory.Equals(LogInputCategory.WindowsEventLogs))
            {
                data3 = data2;
            }
            else
            {
                data3 = data;
            }
            _logContext.LogInputs.Add(new Models.LogInput
            {
                Name = input.Name,
                FirehoseStreamName = BucketName2,
                ConfigurationJSON  = data3,
                LogInputCategory   = input.LogInputCategory,
                LinkedUserID       = user.ID,
                LinkedS3BucketID   = bucket.ID,
                FilePath           = input.FilePath,
                Filter             = input.Filter,
                LogType            = input.LogType,
            });
            try
            {
                await _logContext.SaveChangesAsync();

                TempData["Alert"]   = "Success";
                TempData["Message"] = "Log Input " + input.Name + " created successfully!";
                return(RedirectToAction("Manage", new { InputID = _logContext.LogInputs.Where(LI => LI.Name.Equals(input.Name)).FirstOrDefault().ID }));
            } catch (DbUpdateException)
            {
                TempData["Alert"]   = "Danger";
                TempData["Message"] = "Error Creating log input " + input.Name + "!";
                return(View(input));
            }
        }
Beispiel #26
0
        public async Task <IActionResult> Index(int EventID, int UserID)
        {
            QuestionableEvent qe = _logContext.QuestionableEvents.Find(EventID);
            User concerned       = await _accountContext.Users.FindAsync(UserID);

            Alert a = new Alert
            {
                TimeStamp      = DateTime.Now,
                LinkedUserID   = concerned.ID,
                LinkedObjectID = qe.LinkedAlertTrigger.LinkedLogInputID,
                AlertType      = AlertType.ReviewQuestionableEvent,
                Message        = "There is a event that needs your review"
            };

            if (concerned.LinkedSettings.CommmuicationOptions.Equals(CommmuicationOptions.EMAIL) && concerned.VerifiedEmailAddress)
            {
                SendEmailRequest SESrequest = new SendEmailRequest
                {
                    Source      = Environment.GetEnvironmentVariable("SES_EMAIL_FROM-ADDRESS"),
                    Destination = new Destination
                    {
                        ToAddresses = new List <string>
                        {
                            concerned.EmailAddress
                        }
                    },
                    Message = new Message
                    {
                        Subject = new Content("Review of Event needed"),
                        Body    = new Body
                        {
                            Text = new Content
                            {
                                Charset = "UTF-8",
                                Data    = "Hi " + concerned.Name + ",\r\n\nAn event needs your review.\r\nPlease login to SmartInsights to view more details.\r\n\n\nThis is a computer-generated email, please do not reply"
                            }
                        }
                    }
                };
                SendEmailResponse response = await _SESClient.SendEmailAsync(SESrequest);

                if (response.HttpStatusCode != HttpStatusCode.OK)
                {
                    a.ExternalNotificationType = ExternalNotificationType.EMAIL;
                }
            }
            else if (concerned.LinkedSettings.CommmuicationOptions.Equals(CommmuicationOptions.SMS) && concerned.VerifiedPhoneNumber)
            {
                PublishRequest SNSrequest = new PublishRequest
                {
                    Message     = "An event needs your review. Login to view more details.",
                    PhoneNumber = "+65" + concerned.PhoneNumber
                };
                SNSrequest.MessageAttributes["AWS.SNS.SMS.SenderID"] = new MessageAttributeValue {
                    StringValue = "SmartIS", DataType = "String"
                };
                SNSrequest.MessageAttributes["AWS.SNS.SMS.SMSType"] = new MessageAttributeValue {
                    StringValue = "Transactional", DataType = "String"
                };
                PublishResponse response = await _SNSClient.PublishAsync(SNSrequest);

                if (response.HttpStatusCode != HttpStatusCode.OK)
                {
                    a.ExternalNotificationType = ExternalNotificationType.SMS;
                }
            }
            _accountContext.Alerts.Add(a);
            qe.ReviewUserID = concerned.ID;
            _logContext.QuestionableEvents.Update(qe);
            await _accountContext.SaveChangesAsync();

            await _logContext.SaveChangesAsync();

            return(View(_logContext.QuestionableEvents.ToList()));
        }