2019-06-28 10:01:30 +02:00
|
|
|
|
using System;
|
|
|
|
|
using MySql.Data.MySqlClient;
|
|
|
|
|
using ln.logging;
|
|
|
|
|
using ln.skyscanner.entities;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using ln.types.net;
|
|
|
|
|
using ln.types;
|
|
|
|
|
using System.Globalization;
|
|
|
|
|
namespace ln.skyscanner.import.skytron
|
|
|
|
|
{
|
|
|
|
|
public class SkytronImport
|
|
|
|
|
{
|
|
|
|
|
MySqlConnection mysql;
|
|
|
|
|
|
|
|
|
|
public SkytronImport(String connectionString)
|
|
|
|
|
{
|
|
|
|
|
mysql = new MySqlConnection(connectionString);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Import()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
mysql.Open();
|
|
|
|
|
|
|
|
|
|
ImportStammdaten();
|
|
|
|
|
ImportNodes();
|
|
|
|
|
ImportL2Segmente();
|
|
|
|
|
|
|
|
|
|
} catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Logging.Log(e);
|
|
|
|
|
|
|
|
|
|
if (mysql != null)
|
|
|
|
|
mysql.Close();
|
|
|
|
|
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void ImportStammdaten()
|
|
|
|
|
{
|
|
|
|
|
MySqlCommand command = mysql.CreateCommand();
|
|
|
|
|
|
|
|
|
|
command.CommandText = "SELECT * FROM sender_stammdaten";
|
|
|
|
|
using (MySqlDataReader reader = command.ExecuteReader())
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
PointOfPresence pop = SkyScanner.Instance.Entities.PointOfPresenceCollection.Query("ForeignName", reader.GetInt32("senderid").ToString()).FirstOrDefault();
|
|
|
|
|
if (pop == null)
|
|
|
|
|
{
|
|
|
|
|
Logging.Log(LogLevel.INFO, "New PoP: {0} / {1}", reader.GetInt32("senderid"), reader.GetString("stationsname"));
|
|
|
|
|
pop = new PointOfPresence();
|
|
|
|
|
pop.ForeignName = reader.GetInt32("senderid").ToString();
|
|
|
|
|
pop.Name = reader.GetString("stationsname");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String lati = reader.GetString("koordinaten_breite");
|
|
|
|
|
String longi = reader.GetString("koordinaten_laenge");
|
|
|
|
|
|
|
|
|
|
if (!String.Empty.Equals(lati) && !String.Empty.Equals(longi))
|
|
|
|
|
pop.GeoLocation = new GeoLocation(float.Parse(lati,CultureInfo.InvariantCulture.NumberFormat),float.Parse(longi, CultureInfo.InvariantCulture.NumberFormat));
|
|
|
|
|
|
|
|
|
|
SkyScanner.Instance.Entities.PointOfPresenceCollection.Insert(pop);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void ImportNodes()
|
|
|
|
|
{
|
|
|
|
|
MySqlCommand command = mysql.CreateCommand();
|
|
|
|
|
|
|
|
|
|
command.CommandText = "SELECT * FROM sender_ip_discovery";
|
|
|
|
|
using (MySqlDataReader reader = command.ExecuteReader())
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
String id = reader.GetString("id");
|
|
|
|
|
IPv4 primaryIP = IPv4.Parse(reader.GetString("ip"));
|
|
|
|
|
|
|
|
|
|
Node node = SkyScanner.Instance.Entities.NodeCollection.Query("uniqueIdentity", id).FirstOrDefault();
|
|
|
|
|
if (node == null)
|
|
|
|
|
{
|
|
|
|
|
node = new Node(primaryIP);
|
|
|
|
|
node.UniqueIdentity = id;
|
|
|
|
|
Logging.Log(LogLevel.INFO, "New Node: {0} / {1}",id,primaryIP);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
node.Vendor = reader.GetString("hersteller");
|
|
|
|
|
node.Product = reader.GetString("produkt");
|
|
|
|
|
node.Comment = reader.GetString("devicename");
|
|
|
|
|
|
|
|
|
|
if (reader.GetInt32("http_port") != 0)
|
|
|
|
|
{
|
|
|
|
|
node.RemoveURI("http");
|
|
|
|
|
node.AddURI(new URI(String.Format("http://{0}:{1}",
|
|
|
|
|
primaryIP,
|
|
|
|
|
reader.GetString("http_port")
|
|
|
|
|
)));
|
|
|
|
|
}
|
|
|
|
|
if (reader.GetInt32("ssh_port") != 0)
|
|
|
|
|
{
|
|
|
|
|
node.RemoveURI("ssh");
|
|
|
|
|
node.AddURI(new URI(String.Format("ssh://{0}:{1}@{2}:{3}",
|
|
|
|
|
reader.GetString("ssh_user"),
|
|
|
|
|
reader.GetString("ssh_passwort"),
|
|
|
|
|
primaryIP,
|
|
|
|
|
reader.GetString("ssh_port")
|
|
|
|
|
)));
|
|
|
|
|
}
|
2019-07-08 13:15:50 +02:00
|
|
|
|
|
|
|
|
|
node.RemoveURI("snmp");
|
2019-06-28 10:01:30 +02:00
|
|
|
|
if (!String.Empty.Equals(reader.GetString("snmp_community")))
|
|
|
|
|
{
|
|
|
|
|
node.AddURI(new URI(String.Format("snmp://{0}@{1}#1",
|
|
|
|
|
reader.GetString("snmp_community"),
|
|
|
|
|
primaryIP
|
|
|
|
|
)));
|
|
|
|
|
}
|
|
|
|
|
if (!String.Empty.Equals(reader.GetString("snmp_v3_user")))
|
|
|
|
|
{
|
|
|
|
|
node.AddURI(new URI(String.Format("snmp://{0}:{1}:{2}@{3}#3",
|
|
|
|
|
reader.GetString("snmp_v3_user"),
|
|
|
|
|
reader.GetString("snmp_v3_auth_password"),
|
|
|
|
|
reader.GetString("snmp_v3_encrypt_password"),
|
|
|
|
|
primaryIP
|
|
|
|
|
)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
node.Severity = CheckSeverity.PRODUCTION;
|
|
|
|
|
|
|
|
|
|
SkyScanner.Instance.Entities.NodeCollection.Upsert(node);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void ImportL2Segmente()
|
|
|
|
|
{
|
|
|
|
|
MySqlCommand command = mysql.CreateCommand();
|
|
|
|
|
|
|
|
|
|
command.CommandText = "SELECT * FROM sender_ip_subnetze";
|
|
|
|
|
|
|
|
|
|
using (MySqlDataReader reader = command.ExecuteReader())
|
|
|
|
|
{
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
Network4 net4 = Network4.Parse(reader.GetString("cidr"));
|
|
|
|
|
L2Segment l2 = SkyScanner.Instance.Entities.L2SegmentCollection.Query("Network", net4).FirstOrDefault();
|
|
|
|
|
if (l2 == null)
|
|
|
|
|
{
|
|
|
|
|
l2 = new L2Segment();
|
|
|
|
|
l2.Name = String.Format("SUB#{0}", reader.GetInt32("id").ToString());
|
|
|
|
|
l2.Comment = reader.GetString("beschreibung");
|
|
|
|
|
l2.Network = net4;
|
|
|
|
|
|
|
|
|
|
Logging.Log(LogLevel.INFO, "New L2Segment: {0} / {1}",net4,l2.Name);
|
|
|
|
|
|
|
|
|
|
String sid = reader.GetString("senderid1");
|
|
|
|
|
if ((sid != null) && !String.Empty.Equals(sid))
|
|
|
|
|
{
|
|
|
|
|
PointOfPresence pop = SkyScanner.Instance.Entities.PointOfPresenceCollection.Query("ForeignName", sid).FirstOrDefault();
|
|
|
|
|
if (pop != null)
|
|
|
|
|
l2.PoPs.Add(pop);
|
|
|
|
|
}
|
|
|
|
|
sid = reader.GetString("senderid2");
|
|
|
|
|
if ((sid != null) && !String.Empty.Equals(sid))
|
|
|
|
|
{
|
|
|
|
|
PointOfPresence pop = SkyScanner.Instance.Entities.PointOfPresenceCollection.Query("ForeignName", sid).FirstOrDefault();
|
|
|
|
|
if (pop != null)
|
|
|
|
|
l2.PoPs.Add(pop);
|
|
|
|
|
}
|
|
|
|
|
sid = reader.GetString("senderid3");
|
|
|
|
|
if ((sid != null) && !String.Empty.Equals(sid))
|
|
|
|
|
{
|
|
|
|
|
PointOfPresence pop = SkyScanner.Instance.Entities.PointOfPresenceCollection.Query("ForeignName", sid).FirstOrDefault();
|
|
|
|
|
if (pop != null)
|
|
|
|
|
l2.PoPs.Add(pop);
|
|
|
|
|
}
|
|
|
|
|
sid = reader.GetString("senderid4");
|
|
|
|
|
if ((sid != null) && !String.Empty.Equals(sid))
|
|
|
|
|
{
|
|
|
|
|
PointOfPresence pop = SkyScanner.Instance.Entities.PointOfPresenceCollection.Query("ForeignName", sid).FirstOrDefault();
|
|
|
|
|
if (pop != null)
|
|
|
|
|
l2.PoPs.Add(pop);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SkyScanner.Instance.Entities.L2SegmentCollection.Insert(l2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|