From 7b86176d0ea2cd307ff5dd3570e822cb8bd2436b Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 4 Nov 2015 18:28:07 -0800 Subject: [PATCH 01/10] Don't go kaboom when the ZeroTier service isn't running. --- windows/WinUI/APIHandler.cs | 144 ++++++++++++++++++++--------- windows/WinUI/MainWindow.xaml.cs | 49 ++++++++-- windows/WinUI/NetworksPage.xaml.cs | 4 + windows/WinUI/PeersPage.xaml.cs | 3 + 4 files changed, 146 insertions(+), 54 deletions(-) diff --git a/windows/WinUI/APIHandler.cs b/windows/WinUI/APIHandler.cs index 8e7408a54..ada7369a9 100644 --- a/windows/WinUI/APIHandler.cs +++ b/windows/WinUI/APIHandler.cs @@ -5,6 +5,7 @@ using System.Text; using System.Threading.Tasks; using System.Net; using System.IO; +using System.Windows; using Newtonsoft.Json; namespace WinUI @@ -36,21 +37,32 @@ namespace WinUI request.ContentType = "application/json"; } - var httpResponse = (HttpWebResponse)request.GetResponse(); - using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + try { - var responseText = streamReader.ReadToEnd(); + var httpResponse = (HttpWebResponse)request.GetResponse(); + using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + { + var responseText = streamReader.ReadToEnd(); - ZeroTierStatus status = null; - try - { - status = JsonConvert.DeserializeObject(responseText); + ZeroTierStatus status = null; + try + { + status = JsonConvert.DeserializeObject(responseText); + } + catch (JsonReaderException e) + { + Console.WriteLine(e.ToString()); + } + return status; } - catch (JsonReaderException e) - { - Console.WriteLine(e.ToString()); - } - return status; + } + catch (System.Net.Sockets.SocketException) + { + return null; + } + catch (System.Net.WebException) + { + return null; } } @@ -65,21 +77,32 @@ namespace WinUI request.Method = "GET"; request.ContentType = "application/json"; - var httpResponse = (HttpWebResponse)request.GetResponse(); - using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + try { - var responseText = streamReader.ReadToEnd(); + var httpResponse = (HttpWebResponse)request.GetResponse(); + using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + { + var responseText = streamReader.ReadToEnd(); - List networkList = null; - try - { - networkList = JsonConvert.DeserializeObject>(responseText); + List networkList = null; + try + { + networkList = JsonConvert.DeserializeObject>(responseText); + } + catch (JsonReaderException e) + { + Console.WriteLine(e.ToString()); + } + return networkList; } - catch (JsonReaderException e) - { - Console.WriteLine(e.ToString()); - } - return networkList; + } + catch (System.Net.Sockets.SocketException) + { + return null; + } + catch (System.Net.WebException) + { + return null; } } @@ -93,11 +116,22 @@ namespace WinUI request.Method = "POST"; - var httpResponse = (HttpWebResponse)request.GetResponse(); - - if (httpResponse.StatusCode != HttpStatusCode.OK) + try { - Console.WriteLine("Error sending join network message"); + var httpResponse = (HttpWebResponse)request.GetResponse(); + + if (httpResponse.StatusCode != HttpStatusCode.OK) + { + Console.WriteLine("Error sending join network message"); + } + } + catch (System.Net.Sockets.SocketException) + { + MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service."); + } + catch (System.Net.WebException) + { + MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service."); } } @@ -111,11 +145,22 @@ namespace WinUI request.Method = "DELETE"; - var httpResponse = (HttpWebResponse)request.GetResponse(); - - if (httpResponse.StatusCode != HttpStatusCode.OK) + try { - Console.WriteLine("Error sending leave network message"); + var httpResponse = (HttpWebResponse)request.GetResponse(); + + if (httpResponse.StatusCode != HttpStatusCode.OK) + { + Console.WriteLine("Error sending leave network message"); + } + } + catch (System.Net.Sockets.SocketException) + { + MessageBox.Show("Error Leaving Network: Cannot connect to ZeroTier service."); + } + catch (System.Net.WebException) + { + MessageBox.Show("Error Leaving Network: Cannot connect to ZeroTier service."); } } @@ -130,21 +175,32 @@ namespace WinUI request.Method = "GET"; request.ContentType = "application/json"; - var httpResponse = (HttpWebResponse)request.GetResponse(); - using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + try { - var responseText = streamReader.ReadToEnd(); + var httpResponse = (HttpWebResponse)request.GetResponse(); + using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + { + var responseText = streamReader.ReadToEnd(); - List peerList = null; - try - { - peerList = JsonConvert.DeserializeObject>(responseText); + List peerList = null; + try + { + peerList = JsonConvert.DeserializeObject>(responseText); + } + catch (JsonReaderException e) + { + Console.WriteLine(e.ToString()); + } + return peerList; } - catch (JsonReaderException e) - { - Console.WriteLine(e.ToString()); - } - return peerList; + } + catch (System.Net.Sockets.SocketException) + { + return null; + } + catch (System.Net.WebException) + { + return null; } } } diff --git a/windows/WinUI/MainWindow.xaml.cs b/windows/WinUI/MainWindow.xaml.cs index f6cb4f446..103165b3d 100644 --- a/windows/WinUI/MainWindow.xaml.cs +++ b/windows/WinUI/MainWindow.xaml.cs @@ -29,6 +29,8 @@ namespace WinUI Timer timer = new Timer(); + bool connected = false; + public MainWindow() { InitializeComponent(); @@ -36,6 +38,11 @@ namespace WinUI networksPage.SetAPIHandler(handler); updateStatus(); + if (!connected) + { + MessageBox.Show("Unable to connect to ZeroTier Service."); + } + updateNetworks(); updatePeers(); @@ -50,18 +57,40 @@ namespace WinUI { var status = handler.GetStatus(); - networkId.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => - { - this.networkId.Content = status.Address; - })); - versionString.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => + if (status != null) { - this.versionString.Content = status.Version; - })); - onlineStatus.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => + connected = true; + + networkId.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => + { + this.networkId.Content = status.Address; + })); + versionString.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => + { + this.versionString.Content = status.Version; + })); + onlineStatus.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => + { + this.onlineStatus.Content = (status.Online ? "ONLINE" : "OFFLINE"); + })); + } + else { - this.onlineStatus.Content = (status.Online ? "ONLINE" : "OFFLINE"); - })); + connected = false; + + networkId.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => + { + this.networkId.Content = ""; + })); + versionString.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => + { + this.versionString.Content = "0"; + })); + onlineStatus.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => + { + this.onlineStatus.Content = "OFFLINE"; + })); + } } private void updateNetworks() diff --git a/windows/WinUI/NetworksPage.xaml.cs b/windows/WinUI/NetworksPage.xaml.cs index 9ded9970a..5a0dc19dc 100644 --- a/windows/WinUI/NetworksPage.xaml.cs +++ b/windows/WinUI/NetworksPage.xaml.cs @@ -35,6 +35,10 @@ namespace WinUI public void setNetworks(List networks) { this.wrapPanel.Children.Clear(); + if (networks == null) + { + return; + } for (int i = 0; i < networks.Count; ++i) { diff --git a/windows/WinUI/PeersPage.xaml.cs b/windows/WinUI/PeersPage.xaml.cs index b1dd8adf1..2f4bda49f 100644 --- a/windows/WinUI/PeersPage.xaml.cs +++ b/windows/WinUI/PeersPage.xaml.cs @@ -31,6 +31,9 @@ namespace WinUI public void SetPeers(List peerList) { + if (peerList == null) + return; + this.peersList = peerList; dataGrid.ItemsSource = this.peersList; dataGrid.Items.Refresh(); From 2721804ebf233b2eb1a40ac2e1956baa31139bc1 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 4 Nov 2015 18:39:45 -0800 Subject: [PATCH 02/10] make the tabs a little prettier --- windows/WinUI/MainWindow.xaml | 104 +++++++++++++++++----------------- 1 file changed, 53 insertions(+), 51 deletions(-) diff --git a/windows/WinUI/MainWindow.xaml b/windows/WinUI/MainWindow.xaml index 553d44fe4..b5365a371 100644 --- a/windows/WinUI/MainWindow.xaml +++ b/windows/WinUI/MainWindow.xaml @@ -7,56 +7,58 @@ mc:Ignorable="d" x:Class="WinUI.MainWindow" Title="ZeroTier One" Height="500" Width="700" Icon="ZeroTierIcon.ico"> - - - - - + + - + + + + + + + + + + + + + + @@ -87,7 +89,7 @@ - + @@ -98,7 +100,7 @@ - + From fc32dc11a6f60e5a86e92c7b937a5c4a9f23f4b0 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 4 Nov 2015 19:08:13 -0800 Subject: [PATCH 03/10] make the networks view a bit prettier --- windows/WinUI/NetworkInfoView.xaml | 108 ++++++++++++++++------------- windows/WinUI/NetworksPage.xaml | 2 +- 2 files changed, 60 insertions(+), 50 deletions(-) diff --git a/windows/WinUI/NetworkInfoView.xaml b/windows/WinUI/NetworkInfoView.xaml index 86f2b98cf..80a4087a1 100644 --- a/windows/WinUI/NetworkInfoView.xaml +++ b/windows/WinUI/NetworkInfoView.xaml @@ -5,59 +5,69 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" > - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +