public PersistBackup GetBackup(string server, string backupName) { var servers = _config.GetSection("Servers"); var entry = servers.GetSection(server); if (entry == null) { return(null); } PersistBackup backup = null; var hostName = entry.Key; var password = entry.Value; using (var client = new SftpClient(hostName, "arma3-public", password)) { client.Connect(); if (client.Exists(filePath)) { var mem = new MemoryStream(); client.DownloadFile(filePath, mem); mem.Position = 0; backup = PersistBackup.Read(mem, client.GetLastWriteTime(filePath), hostName).FirstOrDefault(b => b.Name == backupName); } client.Disconnect(); } return(backup); }
/* * private async Task<GameItem> GetItem(string name) * { * var item = await _context.Items.FirstOrDefaultAsync(i => i.Name == name); * if ( item == null) * { * item = new GameItem() * { * Name = name, * Label = name, * GroupWeight = 1 * }; * if (name.Contains("100Rnd")) * { * item.GroupWeight = 100; * } * else if (name.Contains("20Rnd")) * { * item.GroupWeight = 20; * } * else if (name.Contains("30Rnd")) * { * item.GroupWeight = 30; * } * else if (name.Contains("17Rnd")) * { * item.GroupWeight = 17; * } * else if (name.Contains("16Rnd")) * { * item.GroupWeight = 16; * } * else if (name.Contains("10Rnd")) * { * item.GroupWeight = 10; * } * _context.Items.Add(item); * await _context.SaveChangesAsync(); * } * return item; * } */ private List <PersistBackup> DownloadBackup(GameConfig config, DateTime last) { List <PersistBackup> backup = new List <PersistBackup>(); using (var client = _service.GetSftpClient(config.Server)) { client.Connect(); var file = config.ConsoleFileDirectory + "/Users/server/server.vars.Arma3Profile"; if (client.Exists(file)) { var dt = client.GetLastWriteTimeUtc(file); if (dt > last) { var bytes = client.ReadAllBytes(file); backup = PersistBackup.Read(new MemoryStream(bytes), dt); } } client.Disconnect(); } return(backup); }
public List <PersistBackup> GetBackups() { var servers = _config.GetSection("Servers"); var backups = new List <PersistBackup>(); foreach (var entry in servers.GetChildren()) { var hostName = entry.Key; var password = entry.Value; using (var client = new SftpClient(hostName, "gamemanager", password)) { client.Connect(); if (client.Exists(filePath)) { var mem = new MemoryStream(); client.DownloadFile(filePath, mem); mem.Position = 0; backups.AddRange(PersistBackup.Read(mem, client.GetLastWriteTime(filePath), hostName)); } client.Disconnect(); } } return(backups.OrderByDescending(b => b.LastChange).ToList()); }