public async Task CreateFileMonitor(FileMonitorDto fileMonitorDto) { if (fileMonitorDto == null) { throw new ArgumentNullException(nameof(fileMonitorDto)); } var server = await _legacyContext.GameServers.SingleOrDefaultAsync(s => s.ServerId == fileMonitorDto.ServerId); if (server == null) { throw new NullReferenceException(nameof(server)); } var fileMonitor = new FileMonitors { FileMonitorId = Guid.NewGuid(), FilePath = fileMonitorDto.FilePath, BytesRead = fileMonitorDto.BytesRead, LastRead = DateTime.UtcNow.AddHours(-4), //LastError = string.Empty; GameServerServer = server }; _legacyContext.FileMonitors.Add(fileMonitor); await _legacyContext.SaveChangesAsync(); }
public async Task <IActionResult> Edit(FileMonitorDto model) { var fileMonitorDto = await _fileMonitorsRepository.GetFileMonitor(model.FileMonitorId); if (fileMonitorDto == null) { return(NotFound()); } if (!ModelState.IsValid) { await AddGameServersViewData(model.ServerId); return(View(fileMonitorDto)); } var canEditFileMonitor = await _authorizationService.AuthorizeAsync(User, fileMonitorDto, AuthPolicies.EditFileMonitor); if (!canEditFileMonitor.Succeeded) { return(Unauthorized()); } fileMonitorDto.FilePath = model.FilePath; await _fileMonitorsRepository.UpdateFileMonitor(fileMonitorDto); _logger.LogInformation(EventIds.Management, "User {User} has updated {FileMonitorId} against {ServerId}", User.Username(), fileMonitorDto.FileMonitorId, fileMonitorDto.ServerId); this.AddAlertSuccess($"The file monitor has been created for {fileMonitorDto.GameServer.Title}"); return(RedirectToAction(nameof(Index))); }
public async Task <IActionResult> Create(FileMonitorDto model) { var gameServerDto = await _gameServersRepository.GetGameServer(model.ServerId); if (gameServerDto == null) { return(NotFound()); } if (!ModelState.IsValid) { await AddGameServersViewData(model.ServerId); return(View(model)); } var fileMonitorDto = new FileMonitorDto().WithServerDto(gameServerDto); var canCreateFileMonitor = await _authorizationService.AuthorizeAsync(User, fileMonitorDto, AuthPolicies.CreateFileMonitor); if (!canCreateFileMonitor.Succeeded) { return(Unauthorized()); } fileMonitorDto.FilePath = model.FilePath; await _fileMonitorsRepository.CreateFileMonitor(fileMonitorDto); _logger.LogInformation(EventIds.Management, "User {User} has created a new file monitor with Id {Id}", User.Username(), fileMonitorDto.FileMonitorId); this.AddAlertSuccess($"The file monitor has been created for {gameServerDto.Title}"); return(RedirectToAction(nameof(Index))); }
public static FileMonitorDto WithServerDto(this FileMonitorDto fileMonitorDto, GameServerDto gameServerDto) { fileMonitorDto.GameServer = gameServerDto; fileMonitorDto.ServerId = gameServerDto.ServerId; return(fileMonitorDto); }
private void CheckFolder(string path, FileMonitorDto dto) { CheckFiles(Directory.GetFiles(path), dto); var dirs = Directory.GetDirectories(path); foreach (string dir in dirs) { CheckFolders(dir, dto); } }
public static FileMonitorDto ToDto(this FileMonitors fileMonitor) { var fileMonitorDto = new FileMonitorDto { FileMonitorId = fileMonitor.FileMonitorId, FilePath = fileMonitor.FilePath, BytesRead = fileMonitor.BytesRead, LastRead = fileMonitor.LastRead, ServerId = fileMonitor.GameServerServer.ServerId, GameServer = fileMonitor.GameServerServer.ToDto() }; return(fileMonitorDto); }
public async Task UpdateFileMonitor(FileMonitorDto fileMonitorDto) { if (fileMonitorDto == null) { throw new ArgumentNullException(nameof(fileMonitorDto)); } var fileMonitor = await _legacyContext.FileMonitors.SingleOrDefaultAsync(fm => fm.FileMonitorId == fileMonitorDto.FileMonitorId); if (fileMonitor == null) { throw new NullReferenceException(nameof(fileMonitor)); } fileMonitor.FilePath = fileMonitorDto.FilePath; await _legacyContext.SaveChangesAsync(); }
private void CheckFolders(string path, FileMonitorDto dto) { var pathTypeDir = path.IsPathDirOrFile(); if (pathTypeDir == null) { _msgs.Add($"FileMonitoring => Directory or file not found or accessible {path}"); return; } if (!pathTypeDir.Value) { CheckFiles(new[] { path }, dto); return; } if (dto.ScanSubdirectories) { CheckFolder(path, dto); } }
private void CheckFiles(string[] files, FileMonitorDto dto) { var regex = new Regex(dto.Filter, RegexOptions.IgnoreCase); var negRegex = new Regex(dto.NegativeFilter, RegexOptions.IgnoreCase); foreach (var file in files) { if (_msgs.Count >= _maxNrOfErrMsgs) { return; } var fileName = Path.GetFileName(file) + ""; if (regex.IsMatch(fileName)) { if (!negRegex.IsMatch(file)) { _msgs.AddRange(ValidateFileAge(file, TimeSpan.FromHours(dto.FileOverdueInHours))); } } } }