public MainLauncherWindow() { InitializeComponent(); fileService = new WinFileService(); dialogService = new WinDialogService(); freeLanDetectionService = new FreeLanDetectionService(fileService, dialogService); windowsServices = new WindowsServices(); networkAdapters = new NetworkAdapters(); freeLanService = new FreeLanService( windowsServices, freeLanDetectionService, dialogService ); if (!EnvHelper.IsAdministrator()) { MessageBox.Show("To use this application you will need administrator privileges!"); System.Environment.Exit(0); } UpdateWindow(); }
public NetworkAdaptersWindow() { InitializeComponent(); networkAdapters = new NetworkAdapters(); UpdateWindow(); }
///<summary>Initializes a new instance of the <see cref="VirtualMachineDefinition"/> class with the specified virtual machine name and configuration path.</summary> ///<param name="name">The name of the virtual machine.</param> ///<param name="path">The path where the configuration files will be stored.</param> public VirtualMachineDefinition(string name, string path) { Name = name; Notes = ""; Path = path; ScsiControllers.Add(new ScsiController()); NetworkAdapters.Add(new NetworkAdapter()); }
/// <summary> /// Save all the adapters' categories. /// </summary> private void Save() { var local = NetworkAdapters.Where(i => i.Category == NetworkAdapterCategory.Local); var vpn = NetworkAdapters.Where(i => i.Category == NetworkAdapterCategory.Vpn); var none = NetworkAdapters.Where(i => i.Category == NetworkAdapterCategory.None); _killSwitchServiceClient.RemoveLocalAdapters(none.ToArray()); _killSwitchServiceClient.RemoveVpnAdapters(none.ToArray()); _killSwitchServiceClient.AddLocalAdapters(local.ToArray()); _killSwitchServiceClient.AddVpnAdapters(vpn.ToArray()); }
/// <summary> /// Main constructor /// </summary> public MainWindow() { InitializeComponent(); this.StopButton.IsEnabled = false; //Important assign the dispatcher at the beginning UIData.Initialize(this.Dispatcher); //Register for unhandled exceptions AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; //Initialize gui related things this.adapterListView.ItemsSource = UIData.AdapterCollection; this.serviceListView.ItemsSource = UIData.ServiceCollection; this.mmuView.ItemsSource = UIData.MMUCollection; CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(this.mmuView.ItemsSource); //PropertyGroupDescription groupDescription = new PropertyGroupDescription("Language"); //view.GroupDescriptions.Add(groupDescription); view.SortDescriptions.Add(new SortDescription("MotionType", ListSortDirection.Ascending)); view.SortDescriptions.Add(new SortDescription("priority", ListSortDirection.Ascending)); //Create an instance of the register service and register at events this.registerService = new MMIRegisterServiceImplementation(); this.registerService.OnAdapterRegistered += RegisterService_OnAdapterRegistered; this.registerService.OnAdapterUnregistered += RegisterService_OnAdapterUnregistered; this.registerService.OnServiceRegistered += RegisterService_OnServiceRegistered; this.registerService.OnServiceUnregistered += RegisterService_OnServiceUnregistered; //Parse the settings from file try { //Load the settings file from json settings = Serialization.FromJsonString <ServerSettings>(File.ReadAllText("settings.json")); //Check if directory exists -> if not user must provide input if (!Directory.Exists(settings.DataPath)) { ShowFolderSelectionDialog("Invalid path: "); } } catch (Exception) { //Create a new settings file settings = new ServerSettings(); //Show the folder selection dialog ShowFolderSelectionDialog("No settings file found: "); SaveSettings(); //if settings did not exist before save the default settings } //Read settings from system registry encryptionService = new Encrypt(); LoadRegistrySettings(); //Assign the port (common for loaded settings from file or settings from default settings file. RuntimeData.MMIRegisterAddress.Port = settings.RegisterPort; RuntimeData.MMIRegisterAddress.Address = settings.RegisterAddress; //Sets up the performance bar which visualizes performance stats within the main window SetupPerformanceBar(); //check if last selected adapter has the same ip address and update ip if needed NetworkAdapters = new NetworkAdapters(); if (NetworkAdapters.updatedCurrentIp(settings.RegisterInterface, settings.RegisterAddress)) { //update settings and save only if the interface or IP address has changed settings.RegisterAddress = NetworkAdapters.AvailableIp[NetworkAdapters.currentIp].IP; settings.RegisterInterface = NetworkAdapters.AvailableIp[NetworkAdapters.currentIp].Name; RuntimeData.MMIRegisterAddress.Address = settings.RegisterAddress; SaveSettings(); } UpdateTitleBar(); //Directly start all processes if autostart is enabled if (this.settings.AutoStart) { this.StartButton_Click(this, new RoutedEventArgs()); } }
private void workerThread_DoWork(object sender, DoWorkEventArgs e) { try { log.Write(TraceLevel.Info, "Adding Windows Firewall Rule"); try { WindowsFirewall.AuthorizeProgram(AppMain.DisplayName, new FileInfo(Assembly.GetExecutingAssembly().Location)); } catch (Exception ex) { log.Write(TraceLevel.Error, "Failed to add rule to Windows firewall", ex); } if (_worker.CancellationPending) { return; } _worker.ReportProgress(10, "Starting Miracle Server"); log.Write(TraceLevel.Info, "Starting Miracle Server"); _vncManager.StartVncServer(); if (_worker.CancellationPending) { return; } _worker.ReportProgress(30, "Detecting NAT/Firewall"); log.Write(TraceLevel.Info, "Detecting NAT/Firewall"); _apiClient = new MiracleSticksAPIClient("BasicHttpBinding_IMiracleSticksAPI"); // Are we behind a UPnP-enabled NAT/firewall? if (UPnP.NatDeviceFound) { try { if (_worker.CancellationPending) { return; } _worker.ReportProgress(50, "Configuring NAT/Firewall"); log.Write(TraceLevel.Info, "Configuring NAT/Firewall"); _externalEP = UPnP.GetExternalEndpoint(ConfigManager.Data.Port); } catch (Exception ex) { log.Write(TraceLevel.Warning, "UPnP Error", ex); } if (_externalEP == null) { if (_worker.CancellationPending) { return; } log.Write(TraceLevel.Info, "Creating UPnP port mapping"); try { _externalEP = UPnP.MapPort(ConfigManager.Data.Port, ConfigManager.Data.Port); } catch (Exception ex) { log.Write(TraceLevel.Warning, "UPnP Error", ex); } if (_externalEP == null) { log.Write(TraceLevel.Warning, "UPnP port mapping failed"); e.Result = RegisterForPacketRelay(); } } else { log.Write(TraceLevel.Info, "UPnP port mapping already exists"); } if (_externalEP != null) { if (_worker.CancellationPending) { return; } _worker.ReportProgress(70, "Verifying NAT/Firewall Configuration"); // See if the server can access our listen port bool pingSuccess; try { var pingResponse = _apiClient.PortTest(new PortTestRequest { Port = _externalEP.Port }); pingSuccess = pingResponse.Success; } catch (EndpointNotFoundException ex) { log.Write(TraceLevel.Error, "Failed to connect to MiracleSticks service", ex); e.Result = new Exception("Failed to connect to MiracleSticks service"); return; } if (pingSuccess && !AppMain.DebugMode) { e.Result = RegisterForDirectConnection(_externalEP); } else { log.Write(TraceLevel.Warning, "Port test failed"); e.Result = RegisterForPacketRelay(); } } } else { if (_worker.CancellationPending) { return; } log.Write(TraceLevel.Info, "No NAT/firewall detected"); // See if the server can access our listen port bool pingSuccess; try { var pingResponse = _apiClient.PortTest(new PortTestRequest { Port = ConfigManager.Data.Port }); pingSuccess = pingResponse.Success; } catch (EndpointNotFoundException ex) { log.Write(TraceLevel.Error, "Failed to connect to MiracleSticks service", ex); e.Result = new Exception("Failed to connect to MiracleSticks service"); return; } if (pingSuccess && !AppMain.DebugMode) { IPEndPoint ep = new IPEndPoint(NetworkAdapters.GetRoutedInterface(), ConfigManager.Data.Port); e.Result = RegisterForDirectConnection(ep); } else { log.Write(TraceLevel.Warning, "Port test failed"); e.Result = RegisterForPacketRelay(); } } } catch (ThreadAbortException) { throw; } catch (ThreadInterruptedException) { throw; } catch (Exception ex) { log.Write(TraceLevel.Error, "Fatal error", ex); e.Result = ex; } }