diff --git a/windows/WinUI/APIHandler.cs b/windows/WinUI/APIHandler.cs
index 92b830215..83a22c660 100644
--- a/windows/WinUI/APIHandler.cs
+++ b/windows/WinUI/APIHandler.cs
@@ -107,7 +107,7 @@ namespace WinUI
}
}
- public void JoinNetwork(string nwid)
+ public void JoinNetwork(string nwid, bool allowManaged = false, bool allowGlobal = false, bool allowDefault = false)
{
var request = WebRequest.Create(url + "/network/" + nwid + "?auth=" + authtoken) as HttpWebRequest;
if (request == null)
@@ -116,6 +116,17 @@ namespace WinUI
}
request.Method = "POST";
+ request.ContentType = "applicaiton/json";
+
+ using (var streamWriter = new StreamWriter(((HttpWebRequest)request).GetRequestStream()))
+ {
+ string json = "{\"allowManaged\":" + (allowManaged ? "true" : "false") + "," +
+ "\"allowGlobal\":" + (allowGlobal ? "true" : "false") + "," +
+ "\"allowDefault\":" + (allowDefault ? "true" : "false") + "}";
+ streamWriter.Write(json);
+ streamWriter.Flush();
+ streamWriter.Close();
+ }
try
{
diff --git a/windows/WinUI/NetworkInfoView.xaml b/windows/WinUI/NetworkInfoView.xaml
index 54ff03753..1ca488b10 100644
--- a/windows/WinUI/NetworkInfoView.xaml
+++ b/windows/WinUI/NetworkInfoView.xaml
@@ -26,6 +26,9 @@
+
+
+
@@ -48,8 +51,11 @@
+
+
+
-
+
@@ -59,10 +65,13 @@
-
-
+
+
+
-
+
+
+
diff --git a/windows/WinUI/NetworkInfoView.xaml.cs b/windows/WinUI/NetworkInfoView.xaml.cs
index ccdec2884..5c96b9857 100644
--- a/windows/WinUI/NetworkInfoView.xaml.cs
+++ b/windows/WinUI/NetworkInfoView.xaml.cs
@@ -54,6 +54,10 @@ namespace WinUI
}
this.managedIps.Text = iplist;
+
+ this.allowDefault.IsChecked = network.AllowDefault;
+ this.allowGlobal.IsChecked = network.AllowGlobal;
+ this.allowManaged.IsChecked = network.AllowManaged;
}
public bool HasNetwork(ZeroTierNetwork network)
@@ -68,5 +72,32 @@ namespace WinUI
{
handler.LeaveNetwork(network.NetworkId);
}
+
+ private void AllowManaged_CheckStateChanged(object sender, RoutedEventArgs e)
+ {
+ CheckBox cb = sender as CheckBox;
+ handler.JoinNetwork(network.NetworkId,
+ allowManaged.IsChecked ?? false,
+ allowGlobal.IsChecked ?? false,
+ allowDefault.IsChecked ?? false);
+ }
+
+ private void AllowGlobal_CheckStateChanged(object sender, RoutedEventArgs e)
+ {
+ CheckBox cb = sender as CheckBox;
+ handler.JoinNetwork(network.NetworkId,
+ allowManaged.IsChecked ?? false,
+ allowGlobal.IsChecked ?? false,
+ allowDefault.IsChecked ?? false);
+ }
+
+ private void AllowDefault_CheckStateChanged(object sender, RoutedEventArgs e)
+ {
+ CheckBox cb = sender as CheckBox;
+ handler.JoinNetwork(network.NetworkId,
+ allowManaged.IsChecked ?? false,
+ allowGlobal.IsChecked ?? false,
+ allowDefault.IsChecked ?? false);
+ }
}
}
diff --git a/windows/WinUI/NetworkRoute.cs b/windows/WinUI/NetworkRoute.cs
new file mode 100644
index 000000000..61616f448
--- /dev/null
+++ b/windows/WinUI/NetworkRoute.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+
+namespace WinUI
+{
+ public class NetworkRoute
+ {
+ [JsonProperty("target")]
+ public string Target { get; set; }
+
+ [JsonProperty("via")]
+ public string Via { get; set; }
+
+ [JsonProperty("flags")]
+ public int Flags { get; set; }
+
+ [JsonProperty("metric")]
+ public int Metric { get; set; }
+ }
+}
diff --git a/windows/WinUI/WinUI.csproj b/windows/WinUI/WinUI.csproj
index c3eeaba4e..9e3527c98 100644
--- a/windows/WinUI/WinUI.csproj
+++ b/windows/WinUI/WinUI.csproj
@@ -99,6 +99,7 @@
MSBuild:Compile
Designer
+
NetworksPage.xaml
diff --git a/windows/WinUI/ZeroTierNetwork.cs b/windows/WinUI/ZeroTierNetwork.cs
index cce654418..6a6f8498d 100644
--- a/windows/WinUI/ZeroTierNetwork.cs
+++ b/windows/WinUI/ZeroTierNetwork.cs
@@ -42,13 +42,22 @@ namespace WinUI
[JsonProperty("netconfRevision")]
public int NetconfRevision { get; set; }
- [JsonProperty("multicastSubscriptions")]
- public string[] MulticastSubscriptions { get; set; }
-
[JsonProperty("assignedAddresses")]
public string[] AssignedAddresses { get; set; }
+ [JsonProperty("routes")]
+ public NetworkRoute[] Routes { get; set; }
+
[JsonProperty("portDeviceName")]
public string DeviceName { get; set; }
+
+ [JsonProperty("allowManaged")]
+ public bool AllowManaged { get; set; }
+
+ [JsonProperty("allowGlobal")]
+ public bool AllowGlobal { get; set; }
+
+ [JsonProperty("allowDefault")]
+ public bool AllowDefault { get; set; }
}
}