summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2015-11-04 18:28:07 -0800
committerGrant Limberg <glimberg@gmail.com>2015-11-04 18:28:07 -0800
commit7b86176d0ea2cd307ff5dd3570e822cb8bd2436b (patch)
treed7f2ab486e4477d7277d2e03f3ad24c91c3dd503
parenta95ff21aafa793e5282f32b77b893da3f42a4a57 (diff)
downloadinfinitytier-7b86176d0ea2cd307ff5dd3570e822cb8bd2436b.tar.gz
infinitytier-7b86176d0ea2cd307ff5dd3570e822cb8bd2436b.zip
Don't go kaboom when the ZeroTier service isn't running.
-rw-r--r--windows/WinUI/APIHandler.cs140
-rw-r--r--windows/WinUI/MainWindow.xaml.cs49
-rw-r--r--windows/WinUI/NetworksPage.xaml.cs4
-rw-r--r--windows/WinUI/PeersPage.xaml.cs3
4 files changed, 144 insertions, 52 deletions
diff --git a/windows/WinUI/APIHandler.cs b/windows/WinUI/APIHandler.cs
index 8e7408a5..ada7369a 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();
-
- ZeroTierStatus status = null;
- try
- {
- status = JsonConvert.DeserializeObject<ZeroTierStatus>(responseText);
- }
- catch (JsonReaderException e)
+ var httpResponse = (HttpWebResponse)request.GetResponse();
+ using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
- Console.WriteLine(e.ToString());
+ var responseText = streamReader.ReadToEnd();
+
+ ZeroTierStatus status = null;
+ try
+ {
+ status = JsonConvert.DeserializeObject<ZeroTierStatus>(responseText);
+ }
+ catch (JsonReaderException e)
+ {
+ Console.WriteLine(e.ToString());
+ }
+ return status;
}
- 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();
-
- List<ZeroTierNetwork> networkList = null;
- try
+ var httpResponse = (HttpWebResponse)request.GetResponse();
+ using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
- networkList = JsonConvert.DeserializeObject<List<ZeroTierNetwork>>(responseText);
+ var responseText = streamReader.ReadToEnd();
+
+ List<ZeroTierNetwork> networkList = null;
+ try
+ {
+ networkList = JsonConvert.DeserializeObject<List<ZeroTierNetwork>>(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();
+ try
+ {
+ var httpResponse = (HttpWebResponse)request.GetResponse();
- if (httpResponse.StatusCode != HttpStatusCode.OK)
+ if (httpResponse.StatusCode != HttpStatusCode.OK)
+ {
+ Console.WriteLine("Error sending join network message");
+ }
+ }
+ catch (System.Net.Sockets.SocketException)
{
- Console.WriteLine("Error sending join network message");
+ 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();
+ try
+ {
+ var httpResponse = (HttpWebResponse)request.GetResponse();
- if (httpResponse.StatusCode != HttpStatusCode.OK)
+ 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)
{
- Console.WriteLine("Error sending leave network message");
+ 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();
-
- List<ZeroTierPeer> peerList = null;
- try
- {
- peerList = JsonConvert.DeserializeObject<List<ZeroTierPeer>>(responseText);
- }
- catch (JsonReaderException e)
+ var httpResponse = (HttpWebResponse)request.GetResponse();
+ using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
- Console.WriteLine(e.ToString());
+ var responseText = streamReader.ReadToEnd();
+
+ List<ZeroTierPeer> peerList = null;
+ try
+ {
+ peerList = JsonConvert.DeserializeObject<List<ZeroTierPeer>>(responseText);
+ }
+ catch (JsonReaderException e)
+ {
+ Console.WriteLine(e.ToString());
+ }
+ return peerList;
}
- 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 f6cb4f44..103165b3 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 9ded9970..5a0dc19d 100644
--- a/windows/WinUI/NetworksPage.xaml.cs
+++ b/windows/WinUI/NetworksPage.xaml.cs
@@ -35,6 +35,10 @@ namespace WinUI
public void setNetworks(List<ZeroTierNetwork> 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 b1dd8adf..2f4bda49 100644
--- a/windows/WinUI/PeersPage.xaml.cs
+++ b/windows/WinUI/PeersPage.xaml.cs
@@ -31,6 +31,9 @@ namespace WinUI
public void SetPeers(List<ZeroTierPeer> peerList)
{
+ if (peerList == null)
+ return;
+
this.peersList = peerList;
dataGrid.ItemsSource = this.peersList;
dataGrid.Items.Refresh();