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="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
||||||
mc:Ignorable="d" |
mc:Ignorable="d" |
||||||
Title="NetworkInfoView" FontFamily="/ZeroTier One;component/Fonts/#Segoe UI" Height="284" Width="316.333"> |
> |
||||||
<DockPanel LastChildFill="True"> |
<Grid Background="#FFFFFFFF" Margin="5,0,5,1"> |
||||||
<StatusBar DockPanel.Dock="Top"> |
<Grid.ColumnDefinitions> |
||||||
<StatusBar.ItemsPanel> |
<ColumnDefinition Width="auto"/> |
||||||
<ItemsPanelTemplate> |
<ColumnDefinition Width="*"/> |
||||||
<Grid> |
</Grid.ColumnDefinitions> |
||||||
<Grid.RowDefinitions> |
<Grid.RowDefinitions> |
||||||
<RowDefinition Height="*"/> |
<RowDefinition Height="auto"/> |
||||||
</Grid.RowDefinitions> |
<RowDefinition Height="auto"/> |
||||||
<Grid.ColumnDefinitions> |
<RowDefinition Height="auto"/> |
||||||
<ColumnDefinition Width="Auto"/> |
<RowDefinition Height="auto"/> |
||||||
<ColumnDefinition Width="*"/> |
<RowDefinition Height="auto"/> |
||||||
<ColumnDefinition Width="Auto"/> |
<RowDefinition Height="auto"/> |
||||||
</Grid.ColumnDefinitions> |
<RowDefinition Height="auto"/> |
||||||
</Grid> |
<RowDefinition Height="auto"/> |
||||||
</ItemsPanelTemplate> |
<RowDefinition Height="auto"/> |
||||||
</StatusBar.ItemsPanel> |
<RowDefinition Height="auto"/> |
||||||
<StatusBarItem Grid.Column="0"> |
</Grid.RowDefinitions> |
||||||
<TextBlock x:Name="networkId" TextWrapping="Wrap" Text="8056c2e21c000001" Foreground="#FF91A2A3"/> |
|
||||||
</StatusBarItem> |
<Grid Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2"> |
||||||
<StatusBarItem Grid.Column="1"/> |
<Grid.ColumnDefinitions> |
||||||
<StatusBarItem Grid.Column="2"> |
<ColumnDefinition Width="auto"/> |
||||||
<TextBlock x:Name="networkName" TextWrapping="Wrap" Text="earth.zerotier.net"/> |
<ColumnDefinition Width="*"/> |
||||||
</StatusBarItem> |
</Grid.ColumnDefinitions> |
||||||
|
|
||||||
</StatusBar> |
<TextBlock x:Name="networkId" Text="8056c2e21c000001" HorizontalAlignment="Left" Grid.Column="0" Foreground="#FF91A2A3"/> |
||||||
<StackPanel Width="80.483" OpacityMask="Black" Background="White"> |
<TextBlock x:Name="networkName" Text="earth.zerotier.net" HorizontalAlignment="Right" Grid.Column="1" Foreground="#FF000000"/> |
||||||
<TextBlock TextWrapping="Wrap" Text="Status" HorizontalAlignment="Right"/> |
</Grid> |
||||||
<TextBlock TextWrapping="Wrap" Text="Type" HorizontalAlignment="Right"/> |
|
||||||
<TextBlock TextWrapping="Wrap" Text="MAC" HorizontalAlignment="Right"/> |
<TextBlock TextWrapping="Wrap" Text="Status" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="1" Foreground="#FF000000"/> |
||||||
<TextBlock TextWrapping="Wrap" Text="MTU" HorizontalAlignment="Right"/> |
<TextBlock TextWrapping="Wrap" Text="Type" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="2" Foreground="#FF000000"/> |
||||||
<TextBlock TextWrapping="Wrap" Text="Broadcast" HorizontalAlignment="Right"/> |
<TextBlock TextWrapping="Wrap" Text="MAC" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="3" Foreground="#FF000000"/> |
||||||
<TextBlock TextWrapping="Wrap" Text="Bridging" HorizontalAlignment="Right"/> |
<TextBlock TextWrapping="Wrap" Text="MTU" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="4" Foreground="#FF000000"/> |
||||||
<TextBlock TextWrapping="Wrap" Text="Device" HorizontalAlignment="Right"/> |
<TextBlock TextWrapping="Wrap" Text="Broadcast" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="5" Foreground="#FF000000"/> |
||||||
<TextBlock TextWrapping="Wrap" Text="Managed IPs" HorizontalAlignment="Right"/> |
<TextBlock TextWrapping="Wrap" Text="Bridging" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="6" Foreground="#FF000000"/> |
||||||
</StackPanel> |
<TextBlock TextWrapping="Wrap" Text="Device" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="7" Foreground="#FF000000"/> |
||||||
<StackPanel Background="#FFEEEEEE" DockPanel.Dock="Right"> |
<TextBlock TextWrapping="Wrap" Text="Managed IPs" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="8" Foreground="#FF000000"/> |
||||||
<TextBlock TextWrapping="Wrap" HorizontalAlignment="Right" Text="OK" TextAlignment="Right"/> |
|
||||||
<TextBlock TextWrapping="Wrap" Text="PUBLIC" HorizontalAlignment="Right"/> |
<TextBlock x:Name="networkStatus" TextWrapping="Wrap" HorizontalAlignment="Right" Text="OK" TextAlignment="Right" Grid.Column="1" Grid.Row="1" Foreground="#FF000000"/> |
||||||
<TextBlock TextWrapping="Wrap" HorizontalAlignment="Right"><Span><Run Text="02:83:4a:1e:4b:3a"/></Span></TextBlock> |
<TextBlock x:Name="networkType" TextWrapping="Wrap" Text="PUBLIC" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="2" Foreground="#FF000000"/> |
||||||
<TextBlock TextWrapping="Wrap" Text="2800" HorizontalAlignment="Right"/> |
<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 TextWrapping="Wrap" Text="ENABLED" HorizontalAlignment="Right"/> |
<TextBlock x:Name="mtu" TextWrapping="Wrap" Text="2800" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="4" Foreground="#FF000000"/> |
||||||
<TextBlock TextWrapping="Wrap" Text="DISABLED" HorizontalAlignment="Right"/> |
<TextBlock x:Name="broadcastEnabled" TextWrapping="Wrap" Text="ENABLED" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="5" Foreground="#FF000000"/> |
||||||
<TextBlock TextWrapping="Wrap" HorizontalAlignment="Right"><Span><Run Text="ethernet_32771"/></Span></TextBlock> |
<TextBlock x:Name="bridgingEnabled" TextWrapping="Wrap" Text="DISABLED" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="6" Foreground="#FF000000"/> |
||||||
<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> |
<TextBlock x:Name="deviceName" TextWrapping="Wrap" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="7" Foreground="#FF000000"><Span><Run Text="ethernet_32771"/></Span></TextBlock> |
||||||
</StackPanel> |
<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> |
||||||
<StatusBar DockPanel.Dock="Bottom"/> |
|
||||||
</DockPanel> |
<Grid Grid.Column="0" Grid.Row="9" Grid.ColumnSpan="2" Background="#FFFFFFFF"> |
||||||
</Page> |
<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