public void GetStatus(StatusCallback cb) { var request = WebRequest.Create(url + "/status" + "?auth=" + authtoken) as HttpWebRequest; if (request != null) { request.Method = "GET"; request.ContentType = "application/json"; } try { var httpResponse = (HttpWebResponse)request.GetResponse(); 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); if (ZeroTierAddress != status.Address) { ZeroTierAddress = status.Address; } } 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 e) { HttpWebResponse res = (HttpWebResponse)e.Response; if (res != null && res.StatusCode == HttpStatusCode.Unauthorized) { APIHandler.initHandler(true); } else { cb(null); } } }
public void JoinNetwork(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 { 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) { MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service."); return; } try { 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"); } } catch (System.Net.Sockets.SocketException) { MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service."); } catch (System.Net.WebException e) { if (((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.Unauthorized) { APIHandler.initHandler(true); } MessageBox.Show("Error Joining Network: Cannot connect to ZeroTier service."); } }
public void GetPeers(PeersCallback cb) { var request = WebRequest.Create(url + "/peer" + "?auth=" + authtoken) as HttpWebRequest; if (request == null) { cb(null); } request.Method = "GET"; request.ContentType = "application/json"; try { var httpResponse = (HttpWebResponse)request.GetResponse(); 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 e) { if (((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.Unauthorized) { APIHandler.initHandler(true); } else { cb(null); } } }
public void LeaveNetwork(Dispatcher d, string nwid) { Task.Factory.StartNew(() => { var request = WebRequest.Create(url + "/network/" + nwid + "?auth=" + authtoken) as HttpWebRequest; if (request == null) { return; } request.Method = "DELETE"; request.Timeout = 30000; try { var httpResponse = (HttpWebResponse)request.GetResponse(); 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) { d.BeginInvoke(DispatcherPriority.Normal, new Action(() => { 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) { APIHandler.initHandler(true); } d.BeginInvoke(DispatcherPriority.Normal, new Action(() => { MessageBox.Show("Error Leaving Network: Cannot connect to ZeroTier service."); })); } catch { Console.WriteLine("Error leaving network: Unknown error"); } }); }
public void LeaveNetwork(string nwid) { var request = WebRequest.Create(url + "/network/" + nwid + "?auth=" + authtoken) as HttpWebRequest; if (request == null) { return; } request.Method = "DELETE"; request.Timeout = 10000; try { var httpResponse = (HttpWebResponse)request.GetResponse(); 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) { MessageBox.Show("Error Leaving Network: Cannot connect to ZeroTier service."); } catch (System.Net.WebException e) { if (((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.Unauthorized) { APIHandler.initHandler(true); } MessageBox.Show("Error Leaving Network: Cannot connect to ZeroTier service."); } catch { Console.WriteLine("Error leaving network: Unknown error"); } }
public void GetNetworks(NetworkListCallback cb) { var request = WebRequest.Create(url + "/network" + "?auth=" + authtoken) as HttpWebRequest; if (request == null) { cb(null); } request.Method = "GET"; request.ContentType = "application/json"; request.Timeout = 10000; try { var httpResponse = (HttpWebResponse)request.GetResponse(); 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 e) { if (((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.Unauthorized) { APIHandler.initHandler(true); } else { cb(null); } } }