broken
Harald Wolff 2019-04-01 15:17:41 +02:00
parent b1e7d86aea
commit 4cac9fbf56
8 changed files with 71 additions and 9 deletions

View File

@ -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()

View File

@ -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");

View File

@ -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");

View File

@ -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>();

View File

@ -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);
}
} }

View File

@ -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);
}
} }
} }

View File

@ -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({

View File

@ -41,6 +41,6 @@
}); });
refreshSubnetTable(); refreshSubnetTable();
skyapi().addRefresh( refreshSubnetTable ); //skyapi().addRefresh( refreshSubnetTable );
</script> </script>