|
@@ -47,7 +47,7 @@ namespace WinUI
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private static bool initHandler()
|
|
|
+ private static bool initHandler(bool resetToken = false)
|
|
|
{
|
|
|
String localZtDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\ZeroTier\\One";
|
|
|
String globalZtDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\ZeroTier\\One";
|
|
@@ -55,6 +55,20 @@ namespace WinUI
|
|
|
String authToken = "";
|
|
|
Int32 port = 9993;
|
|
|
|
|
|
+ if (resetToken)
|
|
|
+ {
|
|
|
+ instance = null;
|
|
|
+ if (File.Exists(localZtDir + "\\authtoken.secret"))
|
|
|
+ {
|
|
|
+ File.Delete(localZtDir + "\\authtoken.secret");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (File.Exists(localZtDir + "\\zerotier-one.port"))
|
|
|
+ {
|
|
|
+ File.Delete(localZtDir + "\\zerotier-one.port");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (!File.Exists(localZtDir + "\\authtoken.secret") || !File.Exists(localZtDir + "\\zerotier-one.port"))
|
|
|
{
|
|
|
// launch external process to copy file into place
|
|
@@ -127,7 +141,7 @@ namespace WinUI
|
|
|
|
|
|
public APIHandler(int port, string authtoken)
|
|
|
{
|
|
|
- url = "http://localhost:" + port;
|
|
|
+ url = "http://127.0.0.1:" + port;
|
|
|
this.authtoken = authtoken;
|
|
|
}
|
|
|
|
|
@@ -145,29 +159,43 @@ namespace WinUI
|
|
|
try
|
|
|
{
|
|
|
var httpResponse = (HttpWebResponse)request.GetResponse();
|
|
|
- using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
|
|
- {
|
|
|
- var responseText = streamReader.ReadToEnd();
|
|
|
-
|
|
|
- ZeroTierStatus status = null;
|
|
|
- try
|
|
|
- {
|
|
|
- status = JsonConvert.DeserializeObject<ZeroTierStatus>(responseText);
|
|
|
- }
|
|
|
- catch (JsonReaderException e)
|
|
|
- {
|
|
|
- Console.WriteLine(e.ToString());
|
|
|
- }
|
|
|
- cb(status);
|
|
|
- }
|
|
|
+ if (httpResponse.StatusCode == HttpStatusCode.OK)
|
|
|
+ {
|
|
|
+ using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
|
|
+ {
|
|
|
+ var responseText = streamReader.ReadToEnd();
|
|
|
+
|
|
|
+ ZeroTierStatus status = null;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ status = JsonConvert.DeserializeObject<ZeroTierStatus>(responseText);
|
|
|
+ }
|
|
|
+ catch (JsonReaderException e)
|
|
|
+ {
|
|
|
+ Console.WriteLine(e.ToString());
|
|
|
+ }
|
|
|
+ cb(status);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (httpResponse.StatusCode == HttpStatusCode.Unauthorized)
|
|
|
+ {
|
|
|
+ APIHandler.initHandler(true);
|
|
|
+ }
|
|
|
}
|
|
|
catch (System.Net.Sockets.SocketException)
|
|
|
{
|
|
|
cb(null);
|
|
|
}
|
|
|
- catch (System.Net.WebException)
|
|
|
+ catch (System.Net.WebException e)
|
|
|
{
|
|
|
- cb(null);
|
|
|
+ if (((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.Unauthorized)
|
|
|
+ {
|
|
|
+ APIHandler.initHandler(true);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ cb(null);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -188,34 +216,49 @@ namespace WinUI
|
|
|
try
|
|
|
{
|
|
|
var httpResponse = (HttpWebResponse)request.GetResponse();
|
|
|
- using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
|
|
- {
|
|
|
- var responseText = streamReader.ReadToEnd();
|
|
|
|
|
|
- List<ZeroTierNetwork> networkList = null;
|
|
|
- try
|
|
|
- {
|
|
|
- networkList = JsonConvert.DeserializeObject<List<ZeroTierNetwork>>(responseText);
|
|
|
- foreach (ZeroTierNetwork n in networkList)
|
|
|
- {
|
|
|
- // all networks received via JSON are connected by definition
|
|
|
- n.IsConnected = true;
|
|
|
- }
|
|
|
- }
|
|
|
- catch (JsonReaderException e)
|
|
|
- {
|
|
|
- Console.WriteLine(e.ToString());
|
|
|
- }
|
|
|
- cb(networkList);
|
|
|
- }
|
|
|
+ if (httpResponse.StatusCode == HttpStatusCode.OK)
|
|
|
+ {
|
|
|
+ using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
|
|
+ {
|
|
|
+ var responseText = streamReader.ReadToEnd();
|
|
|
+
|
|
|
+ List<ZeroTierNetwork> networkList = null;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ networkList = JsonConvert.DeserializeObject<List<ZeroTierNetwork>>(responseText);
|
|
|
+ foreach (ZeroTierNetwork n in networkList)
|
|
|
+ {
|
|
|
+ // all networks received via JSON are connected by definition
|
|
|
+ n.IsConnected = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (JsonReaderException e)
|
|
|
+ {
|
|
|
+ Console.WriteLine(e.ToString());
|
|
|
+ }
|
|
|
+ cb(networkList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (httpResponse.StatusCode == HttpStatusCode.Unauthorized)
|
|
|
+ {
|
|
|
+ APIHandler.initHandler(true);
|
|
|
+ }
|
|
|
}
|
|
|
catch (System.Net.Sockets.SocketException)
|
|
|
{
|
|
|
cb(null);
|
|
|
}
|
|
|
- catch (System.Net.WebException)
|
|
|
+ catch (System.Net.WebException e)
|
|
|
{
|
|
|
- cb(null);
|
|
|
+ if (((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.Unauthorized)
|
|
|
+ {
|
|
|
+ APIHandler.initHandler(true);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ cb(null);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -252,7 +295,11 @@ namespace WinUI
|
|
|
{
|
|
|
var httpResponse = (HttpWebResponse)request.GetResponse();
|
|
|
|
|
|
- if (httpResponse.StatusCode != HttpStatusCode.OK)
|
|
|
+ if (httpResponse.StatusCode == HttpStatusCode.Unauthorized)
|
|
|
+ {
|
|
|
+ APIHandler.initHandler(true);
|
|
|
+ }
|
|
|
+ else if (httpResponse.StatusCode != HttpStatusCode.OK)
|
|
|
{
|
|
|
Console.WriteLine("Error sending join network message");
|
|
|
}
|
|
@@ -261,9 +308,13 @@ namespace WinUI
|
|
|
{
|
|
|
MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service.");
|
|
|
}
|
|
|
- catch (System.Net.WebException)
|
|
|
+ catch (System.Net.WebException e)
|
|
|
{
|
|
|
- MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service.");
|
|
|
+ if (((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.Unauthorized)
|
|
|
+ {
|
|
|
+ APIHandler.initHandler(true);
|
|
|
+ }
|
|
|
+ MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service.");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -282,7 +333,11 @@ namespace WinUI
|
|
|
{
|
|
|
var httpResponse = (HttpWebResponse)request.GetResponse();
|
|
|
|
|
|
- if (httpResponse.StatusCode != HttpStatusCode.OK)
|
|
|
+ if (httpResponse.StatusCode == HttpStatusCode.Unauthorized)
|
|
|
+ {
|
|
|
+ APIHandler.initHandler(true);
|
|
|
+ }
|
|
|
+ else if (httpResponse.StatusCode != HttpStatusCode.OK)
|
|
|
{
|
|
|
Console.WriteLine("Error sending leave network message");
|
|
|
}
|
|
@@ -291,9 +346,13 @@ namespace WinUI
|
|
|
{
|
|
|
MessageBox.Show("Error Leaving Network: Cannot connect to ZeroTier service.");
|
|
|
}
|
|
|
- catch (System.Net.WebException)
|
|
|
+ catch (System.Net.WebException e)
|
|
|
{
|
|
|
- MessageBox.Show("Error Leaving Network: Cannot connect to ZeroTier service.");
|
|
|
+ if (((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.Unauthorized)
|
|
|
+ {
|
|
|
+ APIHandler.initHandler(true);
|
|
|
+ }
|
|
|
+ MessageBox.Show("Error Leaving Network: Cannot connect to ZeroTier service.");
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
@@ -317,29 +376,43 @@ namespace WinUI
|
|
|
try
|
|
|
{
|
|
|
var httpResponse = (HttpWebResponse)request.GetResponse();
|
|
|
- using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
|
|
- {
|
|
|
- var responseText = streamReader.ReadToEnd();
|
|
|
- //Console.WriteLine(responseText);
|
|
|
- List<ZeroTierPeer> peerList = null;
|
|
|
- try
|
|
|
- {
|
|
|
- peerList = JsonConvert.DeserializeObject<List<ZeroTierPeer>>(responseText);
|
|
|
- }
|
|
|
- catch (JsonReaderException e)
|
|
|
- {
|
|
|
- Console.WriteLine(e.ToString());
|
|
|
- }
|
|
|
- cb(peerList);
|
|
|
- }
|
|
|
+ if (httpResponse.StatusCode == HttpStatusCode.OK)
|
|
|
+ {
|
|
|
+ using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
|
|
|
+ {
|
|
|
+ var responseText = streamReader.ReadToEnd();
|
|
|
+ //Console.WriteLine(responseText);
|
|
|
+ List<ZeroTierPeer> peerList = null;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ peerList = JsonConvert.DeserializeObject<List<ZeroTierPeer>>(responseText);
|
|
|
+ }
|
|
|
+ catch (JsonReaderException e)
|
|
|
+ {
|
|
|
+ Console.WriteLine(e.ToString());
|
|
|
+ }
|
|
|
+ cb(peerList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (httpResponse.StatusCode == HttpStatusCode.Unauthorized)
|
|
|
+ {
|
|
|
+ APIHandler.initHandler(true);
|
|
|
+ }
|
|
|
}
|
|
|
catch (System.Net.Sockets.SocketException)
|
|
|
{
|
|
|
cb(null);
|
|
|
}
|
|
|
- catch (System.Net.WebException)
|
|
|
+ catch (System.Net.WebException e)
|
|
|
{
|
|
|
- cb(null);
|
|
|
+ if (((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.Unauthorized)
|
|
|
+ {
|
|
|
+ APIHandler.initHandler(true);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ cb(null);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|