public IActionResult Domain([FromBody] DiscoveryActiveDirectoryViewModel param) { if (ModelState.IsValid) { _discoverService.Discover(param); return(Ok()); } else { return(BadRequest(ModelState)); } }
public void Discover(DiscoveryActiveDirectoryViewModel param) { Console.WriteLine("========================="); Console.WriteLine("Domain: {0}", param.Domain); Console.WriteLine("========================="); List <Computer> computerList = new List <Computer>(); Console.WriteLine("========================="); Console.WriteLine("CredentialId: {0}", param.CredentialId); Console.WriteLine("========================="); Credential credential = _context.Credentials.SingleOrDefault(cred => cred.Id == param.CredentialId); Console.WriteLine("========================="); Console.WriteLine("UserName: {0}", credential.UserName); Console.WriteLine("========================="); SearchResultCollection results = GetDomainComputers(param.Domain, credential); foreach (SearchResult result in results) { string computername = (string)result.Properties["dnshostname"][0]; //string operatingsystem = (string)result.Properties["operatingsystem"][0]; Console.WriteLine("========================="); Console.WriteLine("ComputerName: {0}", computername); Console.WriteLine("========================="); try { Computer computer = _context.Computers.Single(c => c.ComputerName == computername); computer.ComputerName = computername; //computer.OperatingSystem = operatingsystem; computer.CredentialId = param.CredentialId; computer.SSH = TestPort(computername, 22); computer.RPC = TestPort(computername, 135); computer.SMB = TestPort(computername, 445); computer.WinRM = TestPort(computername, 5985); _context.Computers.Update(computer); } catch { Guid id = Guid.NewGuid(); Console.WriteLine("========================="); Console.WriteLine("Id: {0}", id); Console.WriteLine("========================="); computerList.Add(new Computer { Id = id, ComputerName = computername, OperatingSystem = null, CredentialId = param.CredentialId, Scanned = false, SSH = TestPort(computername, 22), RPC = TestPort(computername, 135), SMB = TestPort(computername, 445), WinRM = TestPort(computername, 5985) }); } } _context.Computers.AddRange(computerList); _context.SaveChanges(); }