|
|
|
|
@ -8,6 +8,7 @@ using System.IO;
|
|
|
|
|
using System.Windows; |
|
|
|
|
using Newtonsoft.Json; |
|
|
|
|
using System.Diagnostics; |
|
|
|
|
using System.Windows.Threading; |
|
|
|
|
|
|
|
|
|
namespace WinUI |
|
|
|
|
{ |
|
|
|
|
@ -264,104 +265,125 @@ namespace WinUI
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void JoinNetwork(string nwid, bool allowManaged = true, bool allowGlobal = false, bool allowDefault = false) |
|
|
|
|
public void JoinNetwork(Dispatcher d, string nwid, bool allowManaged = true, bool allowGlobal = false, bool allowDefault = false) |
|
|
|
|
{ |
|
|
|
|
var request = WebRequest.Create(url + "/network/" + nwid + "?auth=" + authtoken) as HttpWebRequest; |
|
|
|
|
if (request == null) |
|
|
|
|
{ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
request.Method = "POST"; |
|
|
|
|
request.ContentType = "applicaiton/json"; |
|
|
|
|
request.Timeout = 10000; |
|
|
|
|
try |
|
|
|
|
Task.Factory.StartNew(() => |
|
|
|
|
{ |
|
|
|
|
using (var streamWriter = new StreamWriter(((HttpWebRequest)request).GetRequestStream())) |
|
|
|
|
var request = WebRequest.Create(url + "/network/" + nwid + "?auth=" + authtoken) as HttpWebRequest; |
|
|
|
|
if (request == null) |
|
|
|
|
{ |
|
|
|
|
string json = "{\"allowManaged\":" + (allowManaged ? "true" : "false") + "," + |
|
|
|
|
"\"allowGlobal\":" + (allowGlobal ? "true" : "false") + "," + |
|
|
|
|
"\"allowDefault\":" + (allowDefault ? "true" : "false") + "}"; |
|
|
|
|
streamWriter.Write(json); |
|
|
|
|
streamWriter.Flush(); |
|
|
|
|
streamWriter.Close(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
catch (System.Net.WebException) |
|
|
|
|
{ |
|
|
|
|
MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service."); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
var httpResponse = (HttpWebResponse)request.GetResponse(); |
|
|
|
|
request.Method = "POST"; |
|
|
|
|
request.ContentType = "applicaiton/json"; |
|
|
|
|
request.Timeout = 30000; |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
using (var streamWriter = new StreamWriter(((HttpWebRequest)request).GetRequestStream())) |
|
|
|
|
{ |
|
|
|
|
string json = "{\"allowManaged\":" + (allowManaged ? "true" : "false") + "," + |
|
|
|
|
"\"allowGlobal\":" + (allowGlobal ? "true" : "false") + "," + |
|
|
|
|
"\"allowDefault\":" + (allowDefault ? "true" : "false") + "}"; |
|
|
|
|
streamWriter.Write(json); |
|
|
|
|
streamWriter.Flush(); |
|
|
|
|
streamWriter.Close(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
catch (System.Net.WebException) |
|
|
|
|
{ |
|
|
|
|
d.BeginInvoke(DispatcherPriority.Normal, new Action(() => |
|
|
|
|
{ |
|
|
|
|
MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service."); |
|
|
|
|
})); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (httpResponse.StatusCode == HttpStatusCode.Unauthorized) |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
APIHandler.initHandler(true); |
|
|
|
|
var httpResponse = (HttpWebResponse)request.GetResponse(); |
|
|
|
|
|
|
|
|
|
if (httpResponse.StatusCode == HttpStatusCode.Unauthorized) |
|
|
|
|
{ |
|
|
|
|
APIHandler.initHandler(true); |
|
|
|
|
} |
|
|
|
|
else if (httpResponse.StatusCode != HttpStatusCode.OK) |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine("Error sending join network message"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else 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 e) |
|
|
|
|
{ |
|
|
|
|
HttpWebResponse res = (HttpWebResponse)e.Response; |
|
|
|
|
if (res != null && res.StatusCode == HttpStatusCode.Unauthorized) |
|
|
|
|
catch (System.Net.Sockets.SocketException) |
|
|
|
|
{ |
|
|
|
|
APIHandler.initHandler(true); |
|
|
|
|
d.BeginInvoke(DispatcherPriority.Normal, new Action(() => |
|
|
|
|
{ |
|
|
|
|
MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service."); |
|
|
|
|
})); |
|
|
|
|
} |
|
|
|
|
MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service."); |
|
|
|
|
} |
|
|
|
|
catch (System.Net.WebException e) |
|
|
|
|
{ |
|
|
|
|
HttpWebResponse res = (HttpWebResponse)e.Response; |
|
|
|
|
if (res != null && res.StatusCode == HttpStatusCode.Unauthorized) |
|
|
|
|
{ |
|
|
|
|
APIHandler.initHandler(true); |
|
|
|
|
} |
|
|
|
|
d.BeginInvoke(DispatcherPriority.Normal, new Action(() => |
|
|
|
|
{ |
|
|
|
|
MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service."); |
|
|
|
|
})); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void LeaveNetwork(string nwid) |
|
|
|
|
public void LeaveNetwork(Dispatcher d, string nwid) |
|
|
|
|
{ |
|
|
|
|
var request = WebRequest.Create(url + "/network/" + nwid + "?auth=" + authtoken) as HttpWebRequest; |
|
|
|
|
if (request == null) |
|
|
|
|
{ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
Task.Factory.StartNew(() => |
|
|
|
|
{ |
|
|
|
|
var request = WebRequest.Create(url + "/network/" + nwid + "?auth=" + authtoken) as HttpWebRequest; |
|
|
|
|
if (request == null) |
|
|
|
|
{ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
request.Method = "DELETE"; |
|
|
|
|
request.Timeout = 10000; |
|
|
|
|
request.Method = "DELETE"; |
|
|
|
|
request.Timeout = 30000; |
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
var httpResponse = (HttpWebResponse)request.GetResponse(); |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
var httpResponse = (HttpWebResponse)request.GetResponse(); |
|
|
|
|
|
|
|
|
|
if (httpResponse.StatusCode == HttpStatusCode.Unauthorized) |
|
|
|
|
if (httpResponse.StatusCode == HttpStatusCode.Unauthorized) |
|
|
|
|
{ |
|
|
|
|
APIHandler.initHandler(true); |
|
|
|
|
} |
|
|
|
|
else if (httpResponse.StatusCode != HttpStatusCode.OK) |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine("Error sending leave network message"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
catch (System.Net.Sockets.SocketException) |
|
|
|
|
{ |
|
|
|
|
APIHandler.initHandler(true); |
|
|
|
|
d.BeginInvoke(DispatcherPriority.Normal, new Action(() => |
|
|
|
|
{ |
|
|
|
|
MessageBox.Show("Error Leaving Network: Cannot connect to ZeroTier service."); |
|
|
|
|
})); |
|
|
|
|
} |
|
|
|
|
else 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 e) |
|
|
|
|
{ |
|
|
|
|
HttpWebResponse res = (HttpWebResponse)e.Response; |
|
|
|
|
if (res != null && res.StatusCode == HttpStatusCode.Unauthorized) |
|
|
|
|
catch (System.Net.WebException e) |
|
|
|
|
{ |
|
|
|
|
APIHandler.initHandler(true); |
|
|
|
|
HttpWebResponse res = (HttpWebResponse)e.Response; |
|
|
|
|
if (res != null && res.StatusCode == HttpStatusCode.Unauthorized) |
|
|
|
|
{ |
|
|
|
|
APIHandler.initHandler(true); |
|
|
|
|
} |
|
|
|
|
d.BeginInvoke(DispatcherPriority.Normal, new Action(() => |
|
|
|
|
{ |
|
|
|
|
MessageBox.Show("Error Leaving Network: Cannot connect to ZeroTier service."); |
|
|
|
|
})); |
|
|
|
|
} |
|
|
|
|
MessageBox.Show("Error Leaving Network: Cannot connect to ZeroTier service."); |
|
|
|
|
} |
|
|
|
|
catch |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine("Error leaving network: Unknown error"); |
|
|
|
|
} |
|
|
|
|
catch |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine("Error leaving network: Unknown error"); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public delegate void PeersCallback(List<ZeroTierPeer> peers); |
|
|
|
|
|