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); }
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)); }
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}"); }
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)); }
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()); }
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(); }
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(); } }
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); }
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); }
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); } }
/// <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) { } }
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)); }
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(); }
public async Task LogInDB(Log log) { await context.Logs.AddAsync(log); await context.SaveChangesAsync(); }
public async Task AddAsync(EventLog log) { _context.EventLog.Add(log); await _context.SaveChangesAsync(); }
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(); }
public async Task CommitAsync() { await _context.SaveChangesAsync(); }
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)); } }
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())); }