|
|
|
|
@ -1,6 +1,8 @@
|
|
|
|
|
using System; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using System.ComponentModel; |
|
|
|
|
using System.Linq; |
|
|
|
|
using System.Runtime.CompilerServices; |
|
|
|
|
using System.Runtime.Serialization; |
|
|
|
|
using System.Text; |
|
|
|
|
using System.Threading.Tasks; |
|
|
|
|
@ -9,8 +11,27 @@ using Newtonsoft.Json;
|
|
|
|
|
namespace WinUI |
|
|
|
|
{ |
|
|
|
|
[Serializable] |
|
|
|
|
public class ZeroTierNetwork : ISerializable, IEquatable<ZeroTierNetwork>, IComparable<ZeroTierNetwork> |
|
|
|
|
public class ZeroTierNetwork : ISerializable, IEquatable<ZeroTierNetwork>, IComparable<ZeroTierNetwork>, INotifyPropertyChanged |
|
|
|
|
{ |
|
|
|
|
private string networkId; |
|
|
|
|
private string macAddress; |
|
|
|
|
private string networkName; |
|
|
|
|
private string networkStatus; |
|
|
|
|
private string networkType; |
|
|
|
|
private Int32 mtu; |
|
|
|
|
private bool dhcp; |
|
|
|
|
private bool bridge; |
|
|
|
|
private bool broadcastEnabled; |
|
|
|
|
private Int32 portError; |
|
|
|
|
private Int32 netconfRevision; |
|
|
|
|
private string[] assignedAddresses; |
|
|
|
|
private NetworkRoute[] routes; |
|
|
|
|
private string deviceName; |
|
|
|
|
private bool allowManaged; |
|
|
|
|
private bool allowGlobal; |
|
|
|
|
private bool allowDefault; |
|
|
|
|
private bool isConnected; |
|
|
|
|
|
|
|
|
|
protected ZeroTierNetwork(SerializationInfo info, StreamingContext ctx) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
@ -37,6 +58,8 @@ namespace WinUI
|
|
|
|
|
IsConnected = false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged; |
|
|
|
|
|
|
|
|
|
public virtual void GetObjectData(SerializationInfo info, StreamingContext ctx) |
|
|
|
|
{ |
|
|
|
|
info.AddValue("nwid", NetworkId); |
|
|
|
|
@ -58,59 +81,351 @@ namespace WinUI
|
|
|
|
|
info.AddValue("allowDefault", AllowDefault); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void UpdateNetwork(ZeroTierNetwork network) |
|
|
|
|
{ |
|
|
|
|
if (network == null) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
if (!NetworkId.Equals(network.NetworkId)) |
|
|
|
|
{ |
|
|
|
|
NetworkId = network.NetworkId; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!MacAddress.Equals(network.MacAddress)) |
|
|
|
|
{ |
|
|
|
|
MacAddress = network.MacAddress; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!NetworkName.Equals(network.NetworkName)) |
|
|
|
|
{ |
|
|
|
|
NetworkName = network.NetworkName; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!NetworkStatus.Equals(network.NetworkStatus)) |
|
|
|
|
{ |
|
|
|
|
NetworkStatus = network.NetworkStatus; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!NetworkType.Equals(network.NetworkType)) |
|
|
|
|
{ |
|
|
|
|
NetworkType = network.NetworkType; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (MTU != network.MTU) |
|
|
|
|
{ |
|
|
|
|
MTU = network.MTU; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (DHCP != network.DHCP) |
|
|
|
|
{ |
|
|
|
|
DHCP = network.DHCP; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (Bridge != network.Bridge) |
|
|
|
|
{ |
|
|
|
|
Bridge = network.Bridge; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (BroadcastEnabled != network.BroadcastEnabled) |
|
|
|
|
{ |
|
|
|
|
BroadcastEnabled = network.BroadcastEnabled; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (PortError != network.PortError) |
|
|
|
|
{ |
|
|
|
|
PortError = network.PortError; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (NetconfRevision != network.NetconfRevision) |
|
|
|
|
{ |
|
|
|
|
NetconfRevision = network.NetconfRevision; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
AssignedAddresses = network.AssignedAddresses; |
|
|
|
|
|
|
|
|
|
Routes = network.Routes; |
|
|
|
|
|
|
|
|
|
if (!DeviceName.Equals(network.DeviceName)) |
|
|
|
|
{ |
|
|
|
|
DeviceName = network.DeviceName; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (AllowManaged != network.AllowManaged) |
|
|
|
|
{ |
|
|
|
|
AllowManaged = network.AllowManaged; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (AllowGlobal != network.AllowGlobal) |
|
|
|
|
{ |
|
|
|
|
AllowGlobal = network.AllowGlobal; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (AllowDefault != network.AllowDefault) |
|
|
|
|
{ |
|
|
|
|
AllowDefault = network.AllowDefault; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (IsConnected != network.IsConnected) |
|
|
|
|
{ |
|
|
|
|
IsConnected = network.IsConnected; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected void NotifyPropertyChanged([CallerMemberName] string propertyName = null) |
|
|
|
|
{ |
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("nwid")] |
|
|
|
|
public string NetworkId { get; set; } |
|
|
|
|
public string NetworkId { |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return networkId; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
networkId = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("mac")] |
|
|
|
|
public string MacAddress { get; set; } |
|
|
|
|
public string MacAddress |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return macAddress; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
macAddress = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("name")] |
|
|
|
|
public string NetworkName { get; set; } |
|
|
|
|
public string NetworkName |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return networkName; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
networkName = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("status")] |
|
|
|
|
public string NetworkStatus { get; set; } |
|
|
|
|
public string NetworkStatus |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return networkStatus; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
networkStatus = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("type")] |
|
|
|
|
public string NetworkType { get; set; } |
|
|
|
|
public string NetworkType |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return networkType; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
networkType = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("mtu")] |
|
|
|
|
public int MTU { get; set; } |
|
|
|
|
public int MTU |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return mtu; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
mtu = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("dhcp")] |
|
|
|
|
public bool DHCP { get; set; } |
|
|
|
|
public bool DHCP |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return dhcp; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
dhcp = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("bridge")] |
|
|
|
|
public bool Bridge { get; set ; } |
|
|
|
|
public bool Bridge |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return bridge; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
bridge = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("broadcastEnabled")] |
|
|
|
|
public bool BroadcastEnabled { get ; set; } |
|
|
|
|
public bool BroadcastEnabled |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return broadcastEnabled; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
broadcastEnabled = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("portError")] |
|
|
|
|
public int PortError { get; set; } |
|
|
|
|
public int PortError |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return portError; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
portError = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("netconfRevision")] |
|
|
|
|
public int NetconfRevision { get; set; } |
|
|
|
|
public int NetconfRevision |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return netconfRevision; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
netconfRevision = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("assignedAddresses")] |
|
|
|
|
public string[] AssignedAddresses { get; set; } |
|
|
|
|
public string[] AssignedAddresses |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return assignedAddresses; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
assignedAddresses = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("routes")] |
|
|
|
|
public NetworkRoute[] Routes { get; set; } |
|
|
|
|
public NetworkRoute[] Routes |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return routes; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
routes = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("portDeviceName")] |
|
|
|
|
public string DeviceName { get; set; } |
|
|
|
|
public string DeviceName |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return deviceName; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
deviceName = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("allowManaged")] |
|
|
|
|
public bool AllowManaged { get; set; } |
|
|
|
|
public bool AllowManaged |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return allowManaged; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
allowManaged = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("allowGlobal")] |
|
|
|
|
public bool AllowGlobal { get; set; } |
|
|
|
|
public bool AllowGlobal |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return allowGlobal; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
allowGlobal = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
[JsonProperty("allowDefault")] |
|
|
|
|
public bool AllowDefault { get; set; } |
|
|
|
|
public bool AllowDefault |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return allowDefault; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
allowDefault = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public bool IsConnected { get; set; } = false; |
|
|
|
|
public bool IsConnected |
|
|
|
|
{ |
|
|
|
|
get |
|
|
|
|
{ |
|
|
|
|
return isConnected; |
|
|
|
|
} |
|
|
|
|
set |
|
|
|
|
{ |
|
|
|
|
isConnected = value; |
|
|
|
|
NotifyPropertyChanged(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public String Title |
|
|
|
|
{ |
|
|
|
|
|