Browse Source
* No joining/leaving networks yet, but they do display. * Nothing is updated yet after first load of the app. Need to set up a background task to run updates.pull/1/head
14 changed files with 329 additions and 58 deletions
@ -0,0 +1,69 @@
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using System.Text; |
||||
using System.Threading.Tasks; |
||||
using System.Net; |
||||
using System.IO; |
||||
using Newtonsoft.Json; |
||||
|
||||
namespace WinUI |
||||
{ |
||||
|
||||
|
||||
public class APIHandler |
||||
{ |
||||
static string authtoken = "p3ptrzds5jkr2hbx5ipbyf04"; // delete me! |
||||
|
||||
private string url = null; |
||||
|
||||
public APIHandler() |
||||
{ |
||||
url = "http://127.0.0.1:9993"; |
||||
} |
||||
|
||||
public APIHandler(string host, int port) |
||||
{ |
||||
url = "http://" + host + ":" + port; |
||||
} |
||||
|
||||
public ZeroTierStatus getStatus() |
||||
{ |
||||
var request = WebRequest.Create(url + "/status" + "?auth=" + authtoken) as HttpWebRequest; |
||||
if (request != null) |
||||
{ |
||||
request.Method = "GET"; |
||||
request.ContentType = "application/json"; |
||||
} |
||||
|
||||
var httpResponse = (HttpWebResponse)request.GetResponse(); |
||||
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) |
||||
{ |
||||
var responseText = streamReader.ReadToEnd(); |
||||
|
||||
ZeroTierStatus status = JsonConvert.DeserializeObject<ZeroTierStatus>(responseText); |
||||
return status; |
||||
} |
||||
} |
||||
|
||||
public List<ZeroTierNetwork> getNetworks() |
||||
{ |
||||
var request = WebRequest.Create(url + "/network" + "?auth=" + authtoken) as HttpWebRequest; |
||||
if (request != null) |
||||
{ |
||||
request.Method = "GET"; |
||||
request.ContentType = "application/json"; |
||||
} |
||||
|
||||
var httpResponse = (HttpWebResponse)request.GetResponse(); |
||||
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) |
||||
{ |
||||
var responseText = streamReader.ReadToEnd(); |
||||
Console.WriteLine(responseText); |
||||
|
||||
List<ZeroTierNetwork> networkList = JsonConvert.DeserializeObject<List<ZeroTierNetwork>>(responseText); |
||||
return networkList; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@ -1,55 +1,62 @@
|
||||
<Page x:Class="WinUI.NetworkInfoView" |
||||
<UserControl x:Class="WinUI.NetworkInfoView" |
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
||||
mc:Ignorable="d" |
||||
Title="NetworkInfoView" FontFamily="/ZeroTier One;component/Fonts/#Segoe UI" Height="284" Width="316.333"> |
||||
<DockPanel LastChildFill="True"> |
||||
<StatusBar DockPanel.Dock="Top"> |
||||
<StatusBar.ItemsPanel> |
||||
<ItemsPanelTemplate> |
||||
<Grid> |
||||
<Grid.RowDefinitions> |
||||
<RowDefinition Height="*"/> |
||||
</Grid.RowDefinitions> |
||||
<Grid.ColumnDefinitions> |
||||
<ColumnDefinition Width="Auto"/> |
||||
<ColumnDefinition Width="*"/> |
||||
<ColumnDefinition Width="Auto"/> |
||||
</Grid.ColumnDefinitions> |
||||
</Grid> |
||||
</ItemsPanelTemplate> |
||||
</StatusBar.ItemsPanel> |
||||
<StatusBarItem Grid.Column="0"> |
||||
<TextBlock x:Name="networkId" TextWrapping="Wrap" Text="8056c2e21c000001" Foreground="#FF91A2A3"/> |
||||
</StatusBarItem> |
||||
<StatusBarItem Grid.Column="1"/> |
||||
<StatusBarItem Grid.Column="2"> |
||||
<TextBlock x:Name="networkName" TextWrapping="Wrap" Text="earth.zerotier.net"/> |
||||
</StatusBarItem> |
||||
|
||||
</StatusBar> |
||||
<StackPanel Width="80.483" OpacityMask="Black" Background="White"> |
||||
<TextBlock TextWrapping="Wrap" Text="Status" HorizontalAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" Text="Type" HorizontalAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" Text="MAC" HorizontalAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" Text="MTU" HorizontalAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" Text="Broadcast" HorizontalAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" Text="Bridging" HorizontalAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" Text="Device" HorizontalAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" Text="Managed IPs" HorizontalAlignment="Right"/> |
||||
</StackPanel> |
||||
<StackPanel Background="#FFEEEEEE" DockPanel.Dock="Right"> |
||||
<TextBlock TextWrapping="Wrap" HorizontalAlignment="Right" Text="OK" TextAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" Text="PUBLIC" HorizontalAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" HorizontalAlignment="Right"><Span><Run Text="02:83:4a:1e:4b:3a"/></Span></TextBlock> |
||||
<TextBlock TextWrapping="Wrap" Text="2800" HorizontalAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" Text="ENABLED" HorizontalAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" Text="DISABLED" HorizontalAlignment="Right"/> |
||||
<TextBlock TextWrapping="Wrap" HorizontalAlignment="Right"><Span><Run Text="ethernet_32771"/></Span></TextBlock> |
||||
<TextBlock TextWrapping="Wrap" HorizontalAlignment="Right" TextAlignment="Right"><Span><Run Text="28.2.169.248/7 "/></Span><LineBreak/><Span><Run Text="fd80:56c2:e21c:0000:0199:9383:4a02:a9f8/88"/></Span></TextBlock> |
||||
</StackPanel> |
||||
<StatusBar DockPanel.Dock="Bottom"/> |
||||
</DockPanel> |
||||
</Page> |
||||
> |
||||
<Grid Background="#FFFFFFFF" Margin="5,0,5,1"> |
||||
<Grid.ColumnDefinitions> |
||||
<ColumnDefinition Width="auto"/> |
||||
<ColumnDefinition Width="*"/> |
||||
</Grid.ColumnDefinitions> |
||||
<Grid.RowDefinitions> |
||||
<RowDefinition Height="auto"/> |
||||
<RowDefinition Height="auto"/> |
||||
<RowDefinition Height="auto"/> |
||||
<RowDefinition Height="auto"/> |
||||
<RowDefinition Height="auto"/> |
||||
<RowDefinition Height="auto"/> |
||||
<RowDefinition Height="auto"/> |
||||
<RowDefinition Height="auto"/> |
||||
<RowDefinition Height="auto"/> |
||||
<RowDefinition Height="auto"/> |
||||
</Grid.RowDefinitions> |
||||
|
||||
<Grid Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2"> |
||||
<Grid.ColumnDefinitions> |
||||
<ColumnDefinition Width="auto"/> |
||||
<ColumnDefinition Width="*"/> |
||||
</Grid.ColumnDefinitions> |
||||
|
||||
<TextBlock x:Name="networkId" Text="8056c2e21c000001" HorizontalAlignment="Left" Grid.Column="0" Foreground="#FF91A2A3"/> |
||||
<TextBlock x:Name="networkName" Text="earth.zerotier.net" HorizontalAlignment="Right" Grid.Column="1" Foreground="#FF000000"/> |
||||
</Grid> |
||||
|
||||
<TextBlock TextWrapping="Wrap" Text="Status" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="1" Foreground="#FF000000"/> |
||||
<TextBlock TextWrapping="Wrap" Text="Type" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="2" Foreground="#FF000000"/> |
||||
<TextBlock TextWrapping="Wrap" Text="MAC" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="3" Foreground="#FF000000"/> |
||||
<TextBlock TextWrapping="Wrap" Text="MTU" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="4" Foreground="#FF000000"/> |
||||
<TextBlock TextWrapping="Wrap" Text="Broadcast" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="5" Foreground="#FF000000"/> |
||||
<TextBlock TextWrapping="Wrap" Text="Bridging" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="6" Foreground="#FF000000"/> |
||||
<TextBlock TextWrapping="Wrap" Text="Device" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="7" Foreground="#FF000000"/> |
||||
<TextBlock TextWrapping="Wrap" Text="Managed IPs" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="8" Foreground="#FF000000"/> |
||||
|
||||
<TextBlock x:Name="networkStatus" TextWrapping="Wrap" HorizontalAlignment="Right" Text="OK" TextAlignment="Right" Grid.Column="1" Grid.Row="1" Foreground="#FF000000"/> |
||||
<TextBlock x:Name="networkType" TextWrapping="Wrap" Text="PUBLIC" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="2" Foreground="#FF000000"/> |
||||
<TextBlock x:Name="macAddress" TextWrapping="Wrap" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="3" Foreground="#FF000000"><Span><Run Text="02:83:4a:1e:4b:3a"/></Span></TextBlock> |
||||
<TextBlock x:Name="mtu" TextWrapping="Wrap" Text="2800" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="4" Foreground="#FF000000"/> |
||||
<TextBlock x:Name="broadcastEnabled" TextWrapping="Wrap" Text="ENABLED" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="5" Foreground="#FF000000"/> |
||||
<TextBlock x:Name="bridgingEnabled" TextWrapping="Wrap" Text="DISABLED" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="6" Foreground="#FF000000"/> |
||||
<TextBlock x:Name="deviceName" TextWrapping="Wrap" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="7" Foreground="#FF000000"><Span><Run Text="ethernet_32771"/></Span></TextBlock> |
||||
<TextBlock x:Name="managedIps" TextWrapping="Wrap" HorizontalAlignment="Right" TextAlignment="Right" Grid.Column="1" Grid.Row="8" Foreground="#FF000000"><Span><Run Text="28.2.169.248/7 "/></Span><LineBreak/><Span><Run Text="fd80:56c2:e21c:0000:0199:9383:4a02:a9f8/88"/></Span></TextBlock> |
||||
|
||||
<Grid Grid.Column="0" Grid.Row="9" Grid.ColumnSpan="2" Background="#FFFFFFFF"> |
||||
<Grid.ColumnDefinitions> |
||||
<ColumnDefinition Width="*"/> |
||||
</Grid.ColumnDefinitions> |
||||
<Button /> |
||||
<Button x:Name="leaveButton" Content="Leave" HorizontalAlignment="Right" VerticalAlignment="Top" Width="75" Background="#FFFFB354"/> |
||||
</Grid> |
||||
</Grid> |
||||
</UserControl> |
||||
|
||||
@ -0,0 +1,11 @@
|
||||
<UserControl x:Class="WinUI.NetworksPage" |
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
||||
mc:Ignorable="d" |
||||
d:DesignHeight="300" d:DesignWidth="300"> |
||||
<WrapPanel x:Name="wrapPanel" Background="#FF555555"> |
||||
|
||||
</WrapPanel> |
||||
</UserControl> |
||||
@ -0,0 +1,40 @@
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using System.Text; |
||||
using System.Threading.Tasks; |
||||
using System.Windows; |
||||
using System.Windows.Controls; |
||||
using System.Windows.Data; |
||||
using System.Windows.Documents; |
||||
using System.Windows.Input; |
||||
using System.Windows.Media; |
||||
using System.Windows.Media.Imaging; |
||||
using System.Windows.Navigation; |
||||
using System.Windows.Shapes; |
||||
|
||||
namespace WinUI |
||||
{ |
||||
/// <summary> |
||||
/// Interaction logic for NetworksPage.xaml |
||||
/// </summary> |
||||
public partial class NetworksPage : UserControl |
||||
{ |
||||
public NetworksPage() |
||||
{ |
||||
InitializeComponent(); |
||||
} |
||||
|
||||
public void setNetworks(List<ZeroTierNetwork> networks) |
||||
{ |
||||
this.wrapPanel.Children.Clear(); |
||||
|
||||
for (int i = 0; i < networks.Count; ++i) |
||||
{ |
||||
this.wrapPanel.Children.Add( |
||||
new NetworkInfoView( |
||||
networks.ElementAt<ZeroTierNetwork>(i))); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,26 @@
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using System.Text; |
||||
using System.Threading.Tasks; |
||||
|
||||
namespace WinUI |
||||
{ |
||||
public class ZeroTierNetwork |
||||
{ |
||||
public string nwid; |
||||
public string mac; |
||||
public string name; |
||||
public string status; |
||||
public string type; |
||||
public int mtu; |
||||
public bool dhcp; |
||||
public bool bridge; |
||||
public bool broadcastEnabled; |
||||
public int portError; |
||||
public int netconfRevision; |
||||
public string[] multicastSubscriptions; |
||||
public string[] assignedAddresses; |
||||
public string portDeviceName; |
||||
} |
||||
} |
||||
@ -0,0 +1,21 @@
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using System.Text; |
||||
using System.Threading.Tasks; |
||||
|
||||
namespace WinUI |
||||
{ |
||||
public class ZeroTierStatus |
||||
{ |
||||
public string address; |
||||
public string publicIdentity; |
||||
public bool online; |
||||
public bool tcpFallbackActive; |
||||
public int versionMajor; |
||||
public int versionMinor; |
||||
public int versionRev; |
||||
public string version; |
||||
public UInt64 clock; |
||||
} |
||||
} |
||||
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<packages> |
||||
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" /> |
||||
</packages> |
||||
@ -0,0 +1,3 @@
|
||||
* |
||||
!repositories.config |
||||
!.gitignore |
||||
Loading…
Reference in new issue