public ZeroTierAPI(API_Settings api_settings, Network_Settings network_Settings, bool StartZeroTier = false) { if (ZeroTierHandler == null) { ZeroTierHandler = new APIHandler(); } ZeroTierHandler.AddEventHandler(ZeroTierHandler_NetworkChangeEvent); NetworkInfoLog("[ZeroTier] [API] API Created!"); if (api_settings != null) { API_Settings = api_settings; } if (network_Settings != null) { Network_Settings = network_Settings; } // start zero teir Process[] Zero = Process.GetProcessesByName("ZeroTier One"); if (StartZeroTier && Zero.Length <= 0) { Process proccess = new Process(); proccess.StartInfo.FileName = ZeroTierEXEPath; proccess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proccess.StartInfo.WorkingDirectory = ZeroTierFolderPath; proccess.StartInfo.CreateNoWindow = true; proccess.Start(); NetworkInfoLog("[ZeroTier] [CLI] ZeroTier Started!"); } }
public async Task StartServerAsync(string Network = null) { // get zero teir process(es) and kill em Process[] Zero = Process.GetProcessesByName("ZeroTier One"); foreach (var item in Zero) { item.Kill(); item.WaitForExit(); } NetworkInfoLog("[ZeroTier] [API] Stopped all ZeroTier processes"); NetworkInfoLog("[ZeroTier] [API] Locating..."); // Delete all network history DeleteAllNonConnectedNetworks(); // start zero teir Process proccess = new Process(); proccess.StartInfo.FileName = ZeroTierEXEPath; proccess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proccess.StartInfo.CreateNoWindow = true; proccess.Start(); // log sum info NetworkInfoLog("[ZeroTier] [API] Initialized!"); NetworkInfoLog("[ZeroTier] [API] Loading API..."); // instantiate the API manager if it has not been done already if (ZeroTierHandler == null) { ZeroTierHandler = new APIHandler(); ZeroTierHandler.AddEventHandler(ZeroTierHandler_NetworkChangeEvent); NetworkInfoLog("[ZeroTier] [API] API Created!"); } else { NetworkInfoLog("[ZeroTier] [API] API Loaded!"); } // if there is a network provided, dont create one if (Network == null) { Network = await CreateNewNetwork(); } NetworkInfoLog("[ZeroTier] [API-NET] P2P Network Created!"); // leave any joined networks foreach (var LocalNet in ZeroTierHandler.GetNetworks()) { ZeroTierHandler.LeaveNetwork(LocalNet.NetworkId); } // make sure the network is added, and joined properly bool Connected = false; while (!Connected) { foreach (var LocalNet in ZeroTierHandler.GetNetworks()) { if (LocalNet.NetworkId == Network) { if (LocalNet.IsConnected == true && LocalNet.NetworkStatus.Equals("OK")) { Connected = true; } } } if (!Connected) { ZeroTierHandler.JoinNetwork(Network); } } Network_Settings.Network_Id = Network; NetworkInfoLog("[ZeroTier] [Network] Joined Network: " + Network_Settings.Network_Id); NetworkInfoLog("[ZeroTier] [Network] P2P Connection Established!"); }