WIP
parent
b1e7d86aea
commit
4cac9fbf56
38
Program.cs
38
Program.cs
|
@ -28,7 +28,6 @@ using ln.snmp.rfc1213;
|
||||||
using ln.types.sync;
|
using ln.types.sync;
|
||||||
using ln.skyscanner.crawl;
|
using ln.skyscanner.crawl;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Net.NetworkInformation;
|
|
||||||
using ln.skyscanner.crawl.tests;
|
using ln.skyscanner.crawl.tests;
|
||||||
using Castle.DynamicProxy;
|
using Castle.DynamicProxy;
|
||||||
using ln.types.odb;
|
using ln.types.odb;
|
||||||
|
@ -36,6 +35,8 @@ using System.Net.Sockets;
|
||||||
using ln.skyscanner.entities;
|
using ln.skyscanner.entities;
|
||||||
using ln.types.btree;
|
using ln.types.btree;
|
||||||
using ln.types.test;
|
using ln.types.test;
|
||||||
|
using ln.types.threads;
|
||||||
|
using ln.types.net;
|
||||||
|
|
||||||
namespace ln.skyscanner
|
namespace ln.skyscanner
|
||||||
{
|
{
|
||||||
|
@ -45,17 +46,50 @@ namespace ln.skyscanner
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
new IPv4(0);
|
||||||
|
|
||||||
FileLogger fileLogger = new FileLogger("skyscanner.log");
|
FileLogger fileLogger = new FileLogger("skyscanner.log");
|
||||||
fileLogger.MaxLogLevel = LogLevel.INFO;
|
fileLogger.MaxLogLevel = LogLevel.INFO;
|
||||||
Logger.Default.Backends.Add(fileLogger);
|
Logger.Default.Backends.Add(fileLogger);
|
||||||
|
|
||||||
Logger.ConsoleLogger.MaxLogLevel = LogLevel.INFO;
|
Logger.ConsoleLogger.MaxLogLevel = LogLevel.DEBUGDETAIL;
|
||||||
|
|
||||||
Initialize();
|
Initialize();
|
||||||
|
|
||||||
SkyScanner skyScanner = new SkyScanner(args);
|
SkyScanner skyScanner = new SkyScanner(args);
|
||||||
skyScanner.Start();
|
skyScanner.Start();
|
||||||
|
return;
|
||||||
|
|
||||||
|
IEnumerable<Node> nodes = skyScanner.Entities.nodeCollection;
|
||||||
|
foreach (Node node in nodes)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Node: {0}", node);
|
||||||
|
skyScanner.Entities.nodeCollection.Update(node);
|
||||||
|
|
||||||
|
foreach (Node checkNode in SkyScanner.Instance.Entities.nodeCollection.Select("PrimaryIP", node.PrimaryIP))
|
||||||
|
{
|
||||||
|
Console.WriteLine("Node (lookup primary ip): {0}", checkNode);
|
||||||
|
if (!checkNode.ID.Equals(node))
|
||||||
|
{
|
||||||
|
if ((checkNode.Interfaces.Count() == 0))
|
||||||
|
{
|
||||||
|
SkyScanner.Instance.Entities.nodeCollection.Delete(checkNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//IEnumerable<NetworkInterface> interfaces = Timing.Meassure("node.Interfaces",() => node.Interfaces);
|
||||||
|
//foreach (NetworkInterface intf in interfaces)
|
||||||
|
//{
|
||||||
|
// Console.WriteLine(" Interface: {0}", intf);
|
||||||
|
//}
|
||||||
|
|
||||||
|
Console.WriteLine("");
|
||||||
|
Console.WriteLine("");
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Exception();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Initialize()
|
private static void Initialize()
|
||||||
|
|
|
@ -37,6 +37,7 @@ namespace ln.skyscanner
|
||||||
intfIPCollection = odDatabase.GetCollection<IntfIP>();
|
intfIPCollection = odDatabase.GetCollection<IntfIP>();
|
||||||
subnetCollection = odDatabase.GetCollection<Subnet>();
|
subnetCollection = odDatabase.GetCollection<Subnet>();
|
||||||
|
|
||||||
|
nodeCollection.EnsureIndex("PrimaryIP");
|
||||||
interfaceCollection.EnsureIndex("NodeID");
|
interfaceCollection.EnsureIndex("NodeID");
|
||||||
intfIPCollection.EnsureIndex("interfaceID");
|
intfIPCollection.EnsureIndex("interfaceID");
|
||||||
|
|
||||||
|
|
|
@ -104,15 +104,16 @@ namespace ln.skyscanner.crawl
|
||||||
while (servicesToCheck.Count > 0)
|
while (servicesToCheck.Count > 0)
|
||||||
RunServiceCheck(servicesToCheck[0]);
|
RunServiceCheck(servicesToCheck[0]);
|
||||||
|
|
||||||
Host.LastCheckTime = DateTime.Now - dateTime;
|
|
||||||
Host.LastCheck = dateTime;
|
|
||||||
Host.NextCheck = dateTime + TimeSpan.FromHours(1);
|
|
||||||
} catch (Exception e)
|
} catch (Exception e)
|
||||||
{
|
{
|
||||||
Logging.Log(LogLevel.ERROR, "Crawl.RunJob(): Caught exception: {0}",e);
|
Logging.Log(LogLevel.ERROR, "Crawl.RunJob(): Caught exception: {0}",e);
|
||||||
Logging.Log(e);
|
Logging.Log(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Host.LastCheckTime = DateTime.Now - dateTime;
|
||||||
|
Host.LastCheck = dateTime;
|
||||||
|
Host.NextCheck = dateTime + TimeSpan.FromHours(1);
|
||||||
|
|
||||||
bool updated = Crawler.CrawledHosts.Upsert( Host );
|
bool updated = Crawler.CrawledHosts.Upsert( Host );
|
||||||
|
|
||||||
setState("Updating global network");
|
setState("Updating global network");
|
||||||
|
|
|
@ -13,6 +13,7 @@ using ln.logging;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using ln.types.threads;
|
using ln.types.threads;
|
||||||
using ln.types.odb.values;
|
using ln.types.odb.values;
|
||||||
|
using ln.types.net;
|
||||||
|
|
||||||
namespace ln.skyscanner.entities
|
namespace ln.skyscanner.entities
|
||||||
{
|
{
|
||||||
|
@ -96,11 +97,26 @@ namespace ln.skyscanner.entities
|
||||||
public Node FindNodeByIP(CIDR ip)
|
public Node FindNodeByIP(CIDR ip)
|
||||||
{
|
{
|
||||||
ip = ip.Host;
|
ip = ip.Host;
|
||||||
|
/*
|
||||||
|
* ToDo: Alternative Implementation
|
||||||
|
* a) higher performance (use indexing)
|
||||||
|
* b) fix bug: Node not found if no interface ips exist...
|
||||||
|
*/
|
||||||
IntfIP _iip = SkyEntities.intfIPCollection.Where((iip) => iip.IP.Host.Equals(ip)).FirstOrDefault();
|
IntfIP _iip = SkyEntities.intfIPCollection.Where((iip) => iip.IP.Host.Equals(ip)).FirstOrDefault();
|
||||||
return _iip?.NetworkInterface?.Node;
|
return _iip?.NetworkInterface?.Node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Node FindNodeByIP(IPv4 ip)
|
||||||
|
{
|
||||||
|
Node node = SkyEntities.nodeCollection.SelectOne("PrimaryIP", ip);
|
||||||
|
if (node == null)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[Unsynced]
|
[Unsynced]
|
||||||
private Queue<CrawledHost> updateQueue = new Queue<CrawledHost>();
|
private Queue<CrawledHost> updateQueue = new Queue<CrawledHost>();
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,10 @@ namespace ln.skyscanner.entities
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return string.Format("[NetworkInterface ID={0} NodeID={1} Name={2}]",ID,NodeID,Name);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ using ln.types.odb;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using LiteDB;
|
using LiteDB;
|
||||||
using ln.types.threads;
|
using ln.types.threads;
|
||||||
|
using ln.types.net;
|
||||||
namespace ln.skyscanner.entities
|
namespace ln.skyscanner.entities
|
||||||
{
|
{
|
||||||
public class Node
|
public class Node
|
||||||
|
@ -22,7 +23,7 @@ namespace ln.skyscanner.entities
|
||||||
[DocumentID]
|
[DocumentID]
|
||||||
public Guid ID { get; set; } = Guid.NewGuid();
|
public Guid ID { get; set; } = Guid.NewGuid();
|
||||||
|
|
||||||
public CIDR PrimaryIP { get; set; }
|
public IPv4 PrimaryIP { get; set; }
|
||||||
public String PrimaryMac { get; set; }
|
public String PrimaryMac { get; set; }
|
||||||
|
|
||||||
public String Name { get; set; }
|
public String Name { get; set; }
|
||||||
|
@ -102,5 +103,10 @@ namespace ln.skyscanner.entities
|
||||||
return (obj is Node) && (ID.Equals((obj as Node).ID));
|
return (obj is Node) && (ID.Equals((obj as Node).ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return String.Format("[Node ID={0} PrimaryIP={1} Name={2}]",ID,PrimaryIP,Name);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,7 +145,7 @@
|
||||||
$("#hostTable tbody").on( "click", "button#scan", function(){ scan( $("#hostTable").DataTable().row( $(this).parents('tr') ).data().ID ); } );
|
$("#hostTable tbody").on( "click", "button#scan", function(){ scan( $("#hostTable").DataTable().row( $(this).parents('tr') ).data().ID ); } );
|
||||||
|
|
||||||
refreshHostTable();
|
refreshHostTable();
|
||||||
skyapi().addRefresh( refreshHostTable );
|
//skyapi().addRefresh( refreshHostTable );
|
||||||
|
|
||||||
|
|
||||||
$("#chHints").DataTable({
|
$("#chHints").DataTable({
|
||||||
|
|
|
@ -41,6 +41,6 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
refreshSubnetTable();
|
refreshSubnetTable();
|
||||||
skyapi().addRefresh( refreshSubnetTable );
|
//skyapi().addRefresh( refreshSubnetTable );
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue