2019-03-14 13:31:15 +01:00
|
|
|
|
using System;
|
|
|
|
|
using ln.http.resources;
|
|
|
|
|
using ln.skyscanner.entities;
|
|
|
|
|
using System.Linq;
|
2019-03-15 07:43:12 +01:00
|
|
|
|
using ln.skyscanner.crawl;
|
|
|
|
|
using ln.types;
|
|
|
|
|
using System.Net;
|
2019-03-15 15:35:44 +01:00
|
|
|
|
using ln.types.threads;
|
2019-03-14 13:31:15 +01:00
|
|
|
|
|
|
|
|
|
namespace ln.skyscanner.http
|
|
|
|
|
{
|
|
|
|
|
public class CrawlerApi : JsonCallResource
|
|
|
|
|
{
|
|
|
|
|
public SkyScanner SkyScanner { get; }
|
2019-03-26 12:53:42 +01:00
|
|
|
|
public Crawler Crawler => SkyScanner.Crawler;
|
2019-03-14 13:31:15 +01:00
|
|
|
|
|
2019-03-26 12:53:42 +01:00
|
|
|
|
public CrawlerApi(Resource container, SkyScanner skyScanner)
|
|
|
|
|
: base(container, "crawler")
|
2019-03-14 13:31:15 +01:00
|
|
|
|
{
|
|
|
|
|
SkyScanner = skyScanner;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Callable]
|
2019-03-21 14:06:36 +01:00
|
|
|
|
public CrawledSubnet[] GetSubnets()
|
2019-03-14 13:31:15 +01:00
|
|
|
|
{
|
2019-03-26 12:53:42 +01:00
|
|
|
|
return Crawler?.CrawledSubnets.ToArray();
|
2019-03-15 07:43:12 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Callable]
|
|
|
|
|
public CrawledHost[] GetHosts()
|
|
|
|
|
{
|
2019-03-26 12:53:42 +01:00
|
|
|
|
CrawledHost[] result = Crawler?.CrawledHosts.ToArray();
|
|
|
|
|
return result;
|
2019-03-15 07:43:12 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Callable]
|
|
|
|
|
public CrawledHost GetHostByIP(string _ip)
|
|
|
|
|
{
|
2019-03-26 12:53:42 +01:00
|
|
|
|
return SkyScanner.Crawler.FindHostForIP(CIDR.Parse(_ip));
|
2019-03-15 07:43:12 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Callable]
|
|
|
|
|
public CrawledHost AddHost(string _ip, string name)
|
|
|
|
|
{
|
|
|
|
|
CIDR ip = CIDR.Parse(_ip);
|
2019-03-26 12:53:42 +01:00
|
|
|
|
CrawledHost host = SkyScanner.Crawler.FindHostForIP(ip);
|
2019-03-15 07:43:12 +01:00
|
|
|
|
host.Name = name;
|
2019-03-26 12:53:42 +01:00
|
|
|
|
SkyScanner.Crawler.CrawledHosts.Upsert(host);
|
2019-03-15 07:43:12 +01:00
|
|
|
|
return host;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Callable]
|
2019-03-26 12:53:42 +01:00
|
|
|
|
public void Crawl(string _id)
|
2019-03-15 07:43:12 +01:00
|
|
|
|
{
|
2019-03-26 12:53:42 +01:00
|
|
|
|
Guid hostID = Guid.Parse(_id);
|
|
|
|
|
SkyScanner.Crawler.Crawl(hostID);
|
2019-03-14 13:31:15 +01:00
|
|
|
|
}
|
|
|
|
|
|
2019-03-15 15:35:44 +01:00
|
|
|
|
[Callable]
|
|
|
|
|
public PoolJob[] GetCurrentPoolJobs()
|
|
|
|
|
{
|
|
|
|
|
return SkyScanner.Crawler.CurrentJobs;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Callable]
|
|
|
|
|
public PoolJob[] GetQueuedJobs()
|
|
|
|
|
{
|
|
|
|
|
return SkyScanner.Crawler.QueuedJobs;
|
|
|
|
|
}
|
2019-03-14 13:31:15 +01:00
|
|
|
|
|
2019-03-26 12:53:42 +01:00
|
|
|
|
[Callable]
|
|
|
|
|
public bool GetCrawlSubnets()
|
|
|
|
|
{
|
|
|
|
|
return SkyScanner.Crawler.CrawlSubnets;
|
|
|
|
|
}
|
|
|
|
|
[Callable]
|
|
|
|
|
public void SetCrawlSubnets(bool enable)
|
|
|
|
|
{
|
|
|
|
|
SkyScanner.Crawler.CrawlSubnets = enable;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Callable]
|
|
|
|
|
public bool GetCrawlHosts()
|
|
|
|
|
{
|
|
|
|
|
return SkyScanner.Crawler.CrawlHosts;
|
|
|
|
|
}
|
|
|
|
|
[Callable]
|
|
|
|
|
public void SetCrawlHosts(bool enable)
|
|
|
|
|
{
|
|
|
|
|
SkyScanner.Crawler.CrawlHosts = enable;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Callable]
|
|
|
|
|
public void ToggleCrawlHosts()
|
|
|
|
|
{
|
|
|
|
|
SkyScanner.Crawler.CrawlHosts = !SkyScanner.Crawler.CrawlHosts;
|
|
|
|
|
}
|
|
|
|
|
[Callable]
|
|
|
|
|
public void ToggleCrawlSubnets()
|
|
|
|
|
{
|
|
|
|
|
SkyScanner.Crawler.CrawlSubnets = !SkyScanner.Crawler.CrawlSubnets;
|
|
|
|
|
}
|
|
|
|
|
|
2019-03-14 13:31:15 +01:00
|
|
|
|
}
|
|
|
|
|
}
|