public IActionResult FullLog(int id) { var gameServer = _context.GameServers.Include(g => g.HostServer).FirstOrDefault(g => g.GameServerID == id); if (gameServer == null || gameServer.HostServerID == null) { return(NotFound()); } var game = _service.GetConfig(gameServer); var vm = new ServerInfosViewModel(); vm.GameServer = gameServer; vm.Infos = _service.GetGameInfos(gameServer, _service.GetRunningProcesses(game.Server)); using (var client = _service.GetSftpClient(game.Server)) { client.Connect(); vm.Console = GetLog(game, client); client.Disconnect(); } const int ConsoleMaxLength = 5_000_000; if (vm.Console != null && vm.Console.Length > ConsoleMaxLength) { vm.Console = vm.Console.Substring(vm.Console.Length - ConsoleMaxLength, ConsoleMaxLength); } return(View(vm)); }
public async Task <IActionResult> Details(int id) { var gameServer = await _context.GameServers .Include(g => g.HostServer) .Where(g => g.GameServerID == id) .FirstOrDefaultAsync(); if (gameServer == null) { return(BadRequest()); } var currentConfig = await GetActiveConfiguration(gameServer); var vm = new ServerInfosViewModel(); vm.GameServer = gameServer; vm.GameServer.Configurations = await _context.GameServerConfigurations .Include(c => c.Modset) .Where(c => c.GameServerID == gameServer.GameServerID).ToListAsync(); vm.GameServer.SyncFiles = await _context.GameServerSyncedFiles .Include(c => c.GameServer) .Where(c => c.GameServerID == gameServer.GameServerID).ToListAsync(); vm.CurrentConfig = currentConfig; if (gameServer.HostServerID != null) { var gameConfig = _service.GetConfig(gameServer); using (var client = _service.GetSftpClient(gameConfig.Server)) { client.Connect(); if (!string.IsNullOrEmpty(gameConfig.MissionDirectory) && gameServer.Type == GameServerType.Arma3) { vm.MissionFiles = client.ListDirectory(gameConfig.MissionDirectory).Where(f => f.IsRegularFile).Select(f => Path.GetFileName(f.FullName)).Where(f => f.EndsWith(".pbo", StringComparison.OrdinalIgnoreCase)).ToList(); vm.MissionFiles.Sort(); } await _service.SyncConfig(client, gameConfig, currentConfig); client.Disconnect(); } vm.Game = gameConfig; vm.Infos = _service.GetGameInfos(gameServer, _service.GetRunningProcesses(gameConfig.Server)); vm.ConfigFiles = gameConfig.ConfigFiles.Select((f, i) => new ConfigFileInfos() { Index = i, Name = Path.GetFileName(f) }).ToList(); } return(View(vm)); }