Skip to content

Commit

Permalink
Merge pull request #24 from BornToBeRoot/portscanner
Browse files Browse the repository at this point in the history
PortScanner added, some minor fixes
  • Loading branch information
BornToBeRoot authored Jun 8, 2017
2 parents f0ef4ad + d4a0205 commit 9b2cdd0
Show file tree
Hide file tree
Showing 38 changed files with 1,032 additions and 295 deletions.
28 changes: 28 additions & 0 deletions Source/NETworkManager/Converters/PortStatusToStringConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
using static NETworkManager.Models.Network.PortInfo;

namespace NETworkManager.Converters
{
public sealed class PortStatusToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
PortStatus portStatus = (PortStatus)value;

string status = Application.Current.Resources["String_PortStatus_" + portStatus.ToString()] as string;

if (string.IsNullOrEmpty(status))
return portStatus.ToString();

return status;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@

namespace NETworkManager.Models.Network
{
public class TracerouteHopInfo
public class HopInfo
{
public int Hop { get; set; }
public double Time { get; set; }
public IPAddress IPAddress { get; set; }
public string Hostname { get; set; }
public IPStatus Status { get; set; }

public TracerouteHopInfo()
public HopInfo()
{

}

public TracerouteHopInfo(int hop, double time, IPAddress ipAddress, string hostname, IPStatus status)
public HopInfo(int hop, double time, IPAddress ipAddress, string hostname, IPStatus status)
{
Hop = hop;
Time = time;
Expand All @@ -26,9 +26,9 @@ public TracerouteHopInfo(int hop, double time, IPAddress ipAddress, string hostn
Status = status;
}

public static TracerouteHopInfo Parse(TracerouteHopReceivedArgs e)
public static HopInfo Parse(HopReceivedArgs e)
{
return new TracerouteHopInfo(e.Hop, e.Time, e.IPAddress, e.Hostname, e.Status);
return new HopInfo(e.Hop, e.Time, e.IPAddress, e.Hostname, e.Status);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,20 @@

namespace NETworkManager.Models.Network
{
public class TracerouteHopReceivedArgs : System.EventArgs
public class HopReceivedArgs : System.EventArgs
{
public int Hop { get; set; }
public double Time { get; set; }
public IPAddress IPAddress { get; set; }
public string Hostname { get; set; }
public IPStatus Status { get; set; }

public TracerouteHopReceivedArgs()
public HopReceivedArgs()
{

}

public TracerouteHopReceivedArgs(int hop, double time, IPAddress ipAddress, string hostname, IPStatus status)
public HopReceivedArgs(int hop, double time, IPAddress ipAddress, string hostname, IPStatus status)
{
Hop = hop;
Time = time;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@

namespace NETworkManager.Models.Network
{
public class IPScannerHostFoundArgs : System.EventArgs
public class HostFoundArgs : System.EventArgs
{
public PingInfo PingInfo { get; set; }
public string Hostname { get; set; }
public PhysicalAddress MACAddress { get; set; }
public string Vendor { get; set; }

public IPScannerHostFoundArgs()
public HostFoundArgs()
{

}

public IPScannerHostFoundArgs(PingInfo pingInfo, string hostname, PhysicalAddress macAddress, string vendor)
public HostFoundArgs(PingInfo pingInfo, string hostname, PhysicalAddress macAddress, string vendor)
{
PingInfo = pingInfo;
Hostname = hostname;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,29 @@

namespace NETworkManager.Models.Network
{
public class IPScannerHostInfo
public class HostInfo
{
public PingInfo PingInfo { get; set; }
public string Hostname { get; set; }
public PhysicalAddress MACAddress { get; set; }
public string Vendor { get; set; }

public IPScannerHostInfo()
public HostInfo()
{

}

public IPScannerHostInfo(PingInfo pingInfo, string hostname, PhysicalAddress macAddress, string vendor)
public HostInfo(PingInfo pingInfo, string hostname, PhysicalAddress macAddress, string vendor)
{
PingInfo = pingInfo;
Hostname = hostname;
MACAddress = macAddress;
Vendor = vendor;
}

public static IPScannerHostInfo Parse(IPScannerHostFoundArgs e)
public static HostInfo Parse(HostFoundArgs e)
{
return new IPScannerHostInfo(e.PingInfo, e.Hostname, e.MACAddress, e.Vendor);
return new HostInfo(e.PingInfo, e.Hostname, e.MACAddress, e.Vendor);
}
}
}
16 changes: 8 additions & 8 deletions Source/NETworkManager/Models/Network/IPScanner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ public class IPScanner
#endregion

#region Events
public event EventHandler<IPScannerHostFoundArgs> HostFound;
public event EventHandler<HostFoundArgs> HostFound;

protected virtual void OnHostFound(IPScannerHostFoundArgs e)
protected virtual void OnHostFound(HostFoundArgs e)
{
HostFound?.Invoke(this, e);
}
Expand All @@ -26,21 +26,21 @@ protected virtual void OnHostFound(IPScannerHostFoundArgs e)

protected virtual void OnScanComplete()
{
ScanComplete?.Invoke(this, System.EventArgs.Empty);
ScanComplete?.Invoke(this, EventArgs.Empty);
}

public event EventHandler<IPScannerProgressChangedArgs> ProgressChanged;
public event EventHandler<ProgressChangedArgs> ProgressChanged;

protected virtual void OnProgressChanged()
{
ProgressChanged?.Invoke(this, new IPScannerProgressChangedArgs(progressValue));
ProgressChanged?.Invoke(this, new ProgressChangedArgs(progressValue));
}

public event EventHandler UserHasCanceled;

protected virtual void OnUserHasCanceled()
{
UserHasCanceled?.Invoke(this, System.EventArgs.Empty);
UserHasCanceled?.Invoke(this, EventArgs.Empty);
}
#endregion

Expand Down Expand Up @@ -110,12 +110,12 @@ public void ScanAsync(IPAddress[] ipAddresses, IPScannerOptions ipScannerOptions
macAddress = IPNetTableHelper.GetAllDevicesOnLAN().Where(p => p.Key.ToString() == ipAddress.ToString()).ToDictionary(p => p.Key, p => p.Value).First().Value;
// Vendor lookup
vendor = OUILookup.Lookup(macAddress.ToString()).First().Vendor;
vendor = OUILookup.Lookup(macAddress.ToString()).FirstOrDefault().Vendor;
}
catch { }
}
OnHostFound(new IPScannerHostFoundArgs(pingInfo, hostname, macAddress, vendor));
OnHostFound(new HostFoundArgs(pingInfo, hostname, macAddress, vendor));
break;
}
Expand Down
17 changes: 17 additions & 0 deletions Source/NETworkManager/Models/Network/MaximumHopsReachedArgs.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
namespace NETworkManager.Models.Network
{
public class MaximumHopsReachedArgs : System.EventArgs
{
public int Hops { get; set; }

public MaximumHopsReachedArgs()
{

}

public MaximumHopsReachedArgs(int hops)
{
Hops = hops;
}
}
}
20 changes: 10 additions & 10 deletions Source/NETworkManager/Models/Network/NetworkInterface.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ namespace NETworkManager.Models.Network
public class NetworkInterface
{
#region Events
public event EventHandler<IPScannerProgressChangedArgs> ConfigureProgressChanged;
public event EventHandler<ProgressChangedArgs> ConfigureProgressChanged;

protected virtual void OnConfigureProgressChanged(IPScannerProgressChangedArgs e)
protected virtual void OnConfigureProgressChanged(ProgressChangedArgs e)
{
ConfigureProgressChanged?.Invoke(this, e);
}
Expand Down Expand Up @@ -123,43 +123,43 @@ public void ConfigureNetworkInterface(NetworkInterfaceConfig config)
{
if (config.EnableStaticIPAddress)
{
OnConfigureProgressChanged(new IPScannerProgressChangedArgs() { Value = 1 });
OnConfigureProgressChanged(new ProgressChangedArgs() { Value = 1 });
SetStaticIPAddress(config.Id, config.IPAddress, config.Subnetmask, config.Gateway);

if (config.EnableStaticDns)
{
OnConfigureProgressChanged(new IPScannerProgressChangedArgs() { Value = 3 });
OnConfigureProgressChanged(new ProgressChangedArgs() { Value = 3 });
SetStaticDNSServer(config.Id, config.PrimaryDnsServer, config.SecondaryDnsServer);
}
else
{
OnConfigureProgressChanged(new IPScannerProgressChangedArgs() { Value = 4 });
OnConfigureProgressChanged(new ProgressChangedArgs() { Value = 4 });
SetDynamicDNSServer(config.Id);
}
}
else
{
OnConfigureProgressChanged(new IPScannerProgressChangedArgs() { Value = 2 });
OnConfigureProgressChanged(new ProgressChangedArgs() { Value = 2 });
SetDynamicIPAddress(config.Id);

if (config.EnableStaticDns)
{
OnConfigureProgressChanged(new IPScannerProgressChangedArgs() { Value = 3 });
OnConfigureProgressChanged(new ProgressChangedArgs() { Value = 3 });
SetStaticDNSServer(config.Id, config.PrimaryDnsServer, config.SecondaryDnsServer);
}

else
{
OnConfigureProgressChanged(new IPScannerProgressChangedArgs() { Value = 4 });
OnConfigureProgressChanged(new ProgressChangedArgs() { Value = 4 });
SetDynamicDNSServer(config.Id);
}

// Renew dhcp release
OnConfigureProgressChanged(new IPScannerProgressChangedArgs() { Value = 5 });
OnConfigureProgressChanged(new ProgressChangedArgs() { Value = 5 });
RenewDhcpLease(config.Id);

// Fix gateway
OnConfigureProgressChanged(new IPScannerProgressChangedArgs() { Value = 6 });
OnConfigureProgressChanged(new ProgressChangedArgs() { Value = 6 });
FixGatewayAfterDHCPEnabled(config.Id);
}
}
Expand Down
35 changes: 21 additions & 14 deletions Source/NETworkManager/Models/Network/PortInfo.cs
Original file line number Diff line number Diff line change
@@ -1,29 +1,36 @@
namespace NETworkManager.Models.Network
using System.Net;

namespace NETworkManager.Models.Network
{
public class PortInfo
{
public int Number { get; set; }
public PortLookup.Protocol Protocol { get; set; }
public string Service { get; set; }
public string Description { get; set; }
public IPAddress IPAddress { get; set; }
public int Port { get; set; }
public PortLookupInfo LookupInfo { get; set; }
public PortStatus Status { get; set; }

public PortInfo()
{

}

public PortInfo(int number, PortLookup.Protocol protocol)
public PortInfo(IPAddress ipAddress, int port, PortLookupInfo lookupInfo, PortStatus status)
{
Number = number;
Protocol = protocol;
ipAddress = IPAddress;
Port = port;
LookupInfo = lookupInfo;
Status = status;
}

public PortInfo(int number, PortLookup.Protocol protocol, string service, string description)
public static PortInfo Parse(PortScannedArgs e)
{
Number = number;
Protocol = protocol;
Service = service;
Description = description;
}
return new PortInfo(e.IPAddress, e.Port, e.LookupInfo, e.Status);
}

public enum PortStatus
{
Open,
Closed
}
}
}
Loading

0 comments on commit 9b2cdd0

Please sign in to comment.