ln.skyscanner/http/CrawlerApi.cs

146 lines
3.9 KiB
C#
Raw Normal View History

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-04-02 01:25:44 +02:00
using ln.types.net;
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-04-11 08:30:13 +02:00
return SkyScanner.Instance.Entities.CrawledSubnets.ToArray();
2019-03-15 07:43:12 +01:00
}
[Callable]
public CrawledHost[] GetHosts()
{
2019-04-11 08:30:13 +02:00
CrawledHost[] result = SkyScanner.Instance.Entities.CrawledHosts.ToArray();
2019-03-26 12:53:42 +01:00
return result;
2019-03-15 07:43:12 +01:00
}
[Callable]
public CrawledHost GetHostByIP(string _ip)
{
2019-04-02 01:25:44 +02:00
return SkyScanner.Crawler.FindHostForIP(IPv4.Parse(_ip));
2019-03-15 07:43:12 +01:00
}
[Callable]
public CrawledHost AddHost(string _ip, string name)
{
2019-04-02 01:25:44 +02:00
IPv4 ip = IPv4.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-04-11 08:30:13 +02:00
SkyScanner.Instance.Entities.CrawledHosts.Upsert(host);
2019-03-15 07:43:12 +01:00
return host;
}
2019-04-04 19:34:19 +02:00
[Callable]
public void TriggerRecrawl()
{
2019-04-11 08:30:13 +02:00
foreach (CrawledHost host in SkyScanner.Instance.Entities.CrawledHosts.ToArray())
2019-04-04 19:34:19 +02:00
{
host.NextCheck = DateTime.Now;
2019-04-11 08:30:13 +02:00
SkyScanner.Instance.Entities.CrawledHosts.Upsert(host);
2019-04-04 19:34:19 +02:00
}
}
2019-03-15 07:43:12 +01:00
[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-04-02 01:25:44 +02:00
[Callable]
public Network4[] GetBlockedNetworks()
{
2019-04-11 08:30:13 +02:00
return SkyScanner.Instance.Entities.BlockedNetworks.ToArray();
2019-04-02 01:25:44 +02:00
}
[Callable]
public void AddBlockedNetwork(string _network)
{
Network4 blocked = Network4.Parse(_network);
2019-04-11 08:30:13 +02:00
if (!SkyScanner.Instance.Entities.BlockedNetworks.Contains(blocked))
2019-04-02 01:25:44 +02:00
{
2019-04-11 08:30:13 +02:00
SkyScanner.Instance.Entities.BlockedNetworks.Insert(blocked);
2019-04-02 01:25:44 +02:00
}
}
[Callable]
public void RemoveBlockedNetwork(string _network)
{
Network4 blocked = Network4.Parse(_network);
2019-04-11 08:30:13 +02:00
foreach (Network4 blockedNetwork in SkyScanner.Instance.Entities.BlockedNetworks)
2019-04-02 01:25:44 +02:00
{
if (blockedNetwork.Equals(blocked))
{
2019-04-11 08:30:13 +02:00
SkyScanner.Instance.Entities.BlockedNetworks.Delete(blockedNetwork);
2019-04-02 01:25:44 +02:00
return;
}
}
}
2019-03-14 13:31:15 +01:00
}
}