using System; using ln.http.resources; using ln.skyscanner.entities; using System.Linq; using ln.skyscanner.crawl; using ln.types; using System.Net; namespace ln.skyscanner.http { public class CrawlerApi : JsonCallResource { public SkyScanner SkyScanner { get; } public CrawlerApi(Resource container,SkyScanner skyScanner) :base(container,"crawler") { SkyScanner = skyScanner; } [Callable] public Subnet[] GetSubnets() { return new Subnet[0]; } [Callable] public CrawledHost[] GetHosts() { return SkyScanner.Crawler?.CrawlPool?.Hosts; } [Callable] public CrawledHost GetHostByIP(string _ip) { return SkyScanner.Crawler.CrawlPool.HostForIP(CIDR.Parse(_ip)); } [Callable] public CrawledHost AddHost(string _ip, string name) { CIDR ip = CIDR.Parse(_ip); CrawledHost host = SkyScanner.Crawler.CrawlPool.HostForIP(ip); host.Name = name; return host; } [Callable] public void Crawl(string _ip) { SkyScanner.Crawler.Crawl(CIDR.Parse(_ip)); } } }