public NetworkInfoView(APIHandler handler, ZeroTierNetwork network) { InitializeComponent(); this.handler = handler; this.network = network; UpdateNetworkData(); }
private void run() { try { while (runThread.IsAlive) { APIHandler handler = APIHandler.Instance; if (handler != null) { handler.GetNetworks(apiNetworkCallback); handler.GetStatus(apiStatusCallback); } Thread.Sleep(2000); } } catch (Exception e) { Console.WriteLine("Monitor Thread Exception: " + "\n" + e.StackTrace); } Console.WriteLine("Monitor Thread Ended"); }
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); } } }
public void JoinNetwork(Dispatcher d, string nwid, bool allowManaged = true, bool allowGlobal = false, bool allowDefault = false) { Task.Factory.StartNew(() => { var request = WebRequest.Create(url + "/network/" + nwid + "?auth=" + authtoken) as HttpWebRequest; if (request == null) { return; } 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; } 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) { d.BeginInvoke(DispatcherPriority.Normal, new Action(() => { 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."); })); } }); }
private bool InitAPIHandler() { String ztDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\ZeroTier\\One"; String authToken = ""; Int32 port = 9993; try { byte[] tmp = File.ReadAllBytes(ztDir + "\\authtoken.secret"); authToken = System.Text.Encoding.ASCII.GetString(tmp).Trim(); } catch { MessageBox.Show("Unable to read ZeroTier One authtoken.secret from:\r\n" + ztDir, "ZeroTier One"); this.Close(); return false; } if ((authToken == null) || (authToken.Length <= 0)) { MessageBox.Show("Unable to read ZeroTier One authtoken.secret from:\r\n" + ztDir, "ZeroTier One"); this.Close(); return false; } try { byte[] tmp = File.ReadAllBytes(ztDir + "\\zerotier-one.port"); port = Int32.Parse(System.Text.Encoding.ASCII.GetString(tmp).Trim()); if ((port <= 0) || (port > 65535)) port = 9993; } catch { } handler = new APIHandler(port, authToken); return true; }
public void SetAPIHandler(APIHandler handler) { this.handler = handler; }