mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-05 20:13:44 +02:00
Don't go kaboom when the ZeroTier service isn't running.
This commit is contained in:
parent
a95ff21aaf
commit
7b86176d0e
4 changed files with 146 additions and 54 deletions
|
@ -5,6 +5,7 @@ using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Windows;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace WinUI
|
namespace WinUI
|
||||||
|
@ -36,21 +37,32 @@ namespace WinUI
|
||||||
request.ContentType = "application/json";
|
request.ContentType = "application/json";
|
||||||
}
|
}
|
||||||
|
|
||||||
var httpResponse = (HttpWebResponse)request.GetResponse();
|
try
|
||||||
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
|
||||||
{
|
{
|
||||||
var responseText = streamReader.ReadToEnd();
|
var httpResponse = (HttpWebResponse)request.GetResponse();
|
||||||
|
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
||||||
|
{
|
||||||
|
var responseText = streamReader.ReadToEnd();
|
||||||
|
|
||||||
ZeroTierStatus status = null;
|
ZeroTierStatus status = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
status = JsonConvert.DeserializeObject<ZeroTierStatus>(responseText);
|
status = JsonConvert.DeserializeObject<ZeroTierStatus>(responseText);
|
||||||
|
}
|
||||||
|
catch (JsonReaderException e)
|
||||||
|
{
|
||||||
|
Console.WriteLine(e.ToString());
|
||||||
|
}
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
catch (JsonReaderException e)
|
}
|
||||||
{
|
catch (System.Net.Sockets.SocketException)
|
||||||
Console.WriteLine(e.ToString());
|
{
|
||||||
}
|
return null;
|
||||||
return status;
|
}
|
||||||
|
catch (System.Net.WebException)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,21 +77,32 @@ namespace WinUI
|
||||||
request.Method = "GET";
|
request.Method = "GET";
|
||||||
request.ContentType = "application/json";
|
request.ContentType = "application/json";
|
||||||
|
|
||||||
var httpResponse = (HttpWebResponse)request.GetResponse();
|
try
|
||||||
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
|
||||||
{
|
{
|
||||||
var responseText = streamReader.ReadToEnd();
|
var httpResponse = (HttpWebResponse)request.GetResponse();
|
||||||
|
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
||||||
|
{
|
||||||
|
var responseText = streamReader.ReadToEnd();
|
||||||
|
|
||||||
List<ZeroTierNetwork> networkList = null;
|
List<ZeroTierNetwork> networkList = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
networkList = JsonConvert.DeserializeObject<List<ZeroTierNetwork>>(responseText);
|
networkList = JsonConvert.DeserializeObject<List<ZeroTierNetwork>>(responseText);
|
||||||
|
}
|
||||||
|
catch (JsonReaderException e)
|
||||||
|
{
|
||||||
|
Console.WriteLine(e.ToString());
|
||||||
|
}
|
||||||
|
return networkList;
|
||||||
}
|
}
|
||||||
catch (JsonReaderException e)
|
}
|
||||||
{
|
catch (System.Net.Sockets.SocketException)
|
||||||
Console.WriteLine(e.ToString());
|
{
|
||||||
}
|
return null;
|
||||||
return networkList;
|
}
|
||||||
|
catch (System.Net.WebException)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,11 +116,22 @@ namespace WinUI
|
||||||
|
|
||||||
request.Method = "POST";
|
request.Method = "POST";
|
||||||
|
|
||||||
var httpResponse = (HttpWebResponse)request.GetResponse();
|
try
|
||||||
|
|
||||||
if (httpResponse.StatusCode != HttpStatusCode.OK)
|
|
||||||
{
|
{
|
||||||
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";
|
request.Method = "DELETE";
|
||||||
|
|
||||||
var httpResponse = (HttpWebResponse)request.GetResponse();
|
try
|
||||||
|
|
||||||
if (httpResponse.StatusCode != HttpStatusCode.OK)
|
|
||||||
{
|
{
|
||||||
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.Method = "GET";
|
||||||
request.ContentType = "application/json";
|
request.ContentType = "application/json";
|
||||||
|
|
||||||
var httpResponse = (HttpWebResponse)request.GetResponse();
|
try
|
||||||
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
|
||||||
{
|
{
|
||||||
var responseText = streamReader.ReadToEnd();
|
var httpResponse = (HttpWebResponse)request.GetResponse();
|
||||||
|
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
||||||
|
{
|
||||||
|
var responseText = streamReader.ReadToEnd();
|
||||||
|
|
||||||
List<ZeroTierPeer> peerList = null;
|
List<ZeroTierPeer> peerList = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
peerList = JsonConvert.DeserializeObject<List<ZeroTierPeer>>(responseText);
|
peerList = JsonConvert.DeserializeObject<List<ZeroTierPeer>>(responseText);
|
||||||
|
}
|
||||||
|
catch (JsonReaderException e)
|
||||||
|
{
|
||||||
|
Console.WriteLine(e.ToString());
|
||||||
|
}
|
||||||
|
return peerList;
|
||||||
}
|
}
|
||||||
catch (JsonReaderException e)
|
}
|
||||||
{
|
catch (System.Net.Sockets.SocketException)
|
||||||
Console.WriteLine(e.ToString());
|
{
|
||||||
}
|
return null;
|
||||||
return peerList;
|
}
|
||||||
|
catch (System.Net.WebException)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,8 @@ namespace WinUI
|
||||||
|
|
||||||
Timer timer = new Timer();
|
Timer timer = new Timer();
|
||||||
|
|
||||||
|
bool connected = false;
|
||||||
|
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
@ -36,6 +38,11 @@ namespace WinUI
|
||||||
networksPage.SetAPIHandler(handler);
|
networksPage.SetAPIHandler(handler);
|
||||||
|
|
||||||
updateStatus();
|
updateStatus();
|
||||||
|
if (!connected)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Unable to connect to ZeroTier Service.");
|
||||||
|
}
|
||||||
|
|
||||||
updateNetworks();
|
updateNetworks();
|
||||||
updatePeers();
|
updatePeers();
|
||||||
|
|
||||||
|
@ -50,18 +57,40 @@ namespace WinUI
|
||||||
{
|
{
|
||||||
var status = handler.GetStatus();
|
var status = handler.GetStatus();
|
||||||
|
|
||||||
networkId.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
|
if (status != null)
|
||||||
{
|
|
||||||
this.networkId.Content = status.Address;
|
|
||||||
}));
|
|
||||||
versionString.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
|
|
||||||
{
|
{
|
||||||
this.versionString.Content = status.Version;
|
connected = true;
|
||||||
}));
|
|
||||||
onlineStatus.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
|
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()
|
private void updateNetworks()
|
||||||
|
|
|
@ -35,6 +35,10 @@ namespace WinUI
|
||||||
public void setNetworks(List<ZeroTierNetwork> networks)
|
public void setNetworks(List<ZeroTierNetwork> networks)
|
||||||
{
|
{
|
||||||
this.wrapPanel.Children.Clear();
|
this.wrapPanel.Children.Clear();
|
||||||
|
if (networks == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < networks.Count; ++i)
|
for (int i = 0; i < networks.Count; ++i)
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,6 +31,9 @@ namespace WinUI
|
||||||
|
|
||||||
public void SetPeers(List<ZeroTierPeer> peerList)
|
public void SetPeers(List<ZeroTierPeer> peerList)
|
||||||
{
|
{
|
||||||
|
if (peerList == null)
|
||||||
|
return;
|
||||||
|
|
||||||
this.peersList = peerList;
|
this.peersList = peerList;
|
||||||
dataGrid.ItemsSource = this.peersList;
|
dataGrid.ItemsSource = this.peersList;
|
||||||
dataGrid.Items.Refresh();
|
dataGrid.Items.Refresh();
|
||||||
|
|
Loading…
Add table
Reference in a new issue