public ServerLogWindow(ShadowsocksController controller, WindowStatus status) { InitializeComponent(); I18NUtil.SetLanguage(Resources, @"ServerLogWindow"); LoadLanguage(); _controller = controller; Closed += (o, e) => { _controller.ConfigChanged -= controller_ConfigChanged; }; _controller.ConfigChanged += controller_ConfigChanged; LoadConfig(true); ServerDataGrid.GridColumnSizer.SortIconWidth = 0; if (status == null) { SizeToContent = SizeToContent.Width; Height = 600; WindowStartupLocation = WindowStartupLocation.CenterScreen; ServerDataGrid.ShowBusyIndicator = false; } else { ServerDataGrid.ShowBusyIndicator = true; SizeToContent = SizeToContent.Manual; status.SetStatus(this); } }
public static void CheckPort(int port) { if (port <= IPEndPoint.MinPort || port > IPEndPoint.MaxPort) { throw new ConfigurationException(I18NUtil.GetAppStringValue(@"PortOutOfRange")); } }
private void LoadLanguage() { UpdateTitle(); foreach (var c in ViewUtils.FindVisualChildren <Label>(this)) { c.Content = I18N.GetString(c.Content.ToString()); } foreach (var c in ViewUtils.FindVisualChildren <Button>(this)) { c.Content = I18N.GetString(c.Content.ToString()); } foreach (var c in ViewUtils.FindVisualChildren <CheckBox>(this)) { c.Content = I18N.GetString(c.Content.ToString()); } foreach (var c in ViewUtils.FindVisualChildren <GroupBox>(this)) { c.Header = I18N.GetString(c.Header.ToString()); } ProxyTypeComboBox.Items.Add(I18N.GetString(@"Socks5(support UDP)")); ProxyTypeComboBox.Items.Add(I18N.GetString(@"Http tunnel")); ProxyTypeComboBox.Items.Add(I18N.GetString(@"TCP Port tunnel")); foreach (var value in Enum.GetValues(typeof(LoadBalance))) { var str = value.ToString(); _balanceIndexMap.Add(str); BalanceComboBox.Items.Add(I18NUtil.GetAppStringValue(str)); } }
public SettingsWindow(MainController controller) { InitializeComponent(); I18NUtil.SetLanguage(Resources, @"SettingsWindow"); Closed += (o, e) => { _controller.ConfigChanged -= controller_ConfigChanged; }; _controller = controller; }
private static void ThrowSocketException(ref Exception e) { // TODO:translate Microsoft language into human language // i.e. An attempt was made to access a socket in a way forbidden by its access permissions => Port already in use // https://docs.microsoft.com/zh-cn/dotnet/api/system.net.sockets.socketerror if (e is not SocketException se) { return; } switch (se.SocketErrorCode) { case SocketError.AddressAlreadyInUse: { e = new Exception(string.Format(I18NUtil.GetAppStringValue(@"PortInUse"), Global.GuiConfig.LocalPort), se); break; } case SocketError.AccessDenied: { e = new Exception(string.Format(I18NUtil.GetAppStringValue(@"PortReserved"), Global.GuiConfig.LocalPort), se); break; } } }
public ServerConfigWindow(MainController controller, int focusIndex) { InitializeComponent(); I18NUtil.SetLanguage(Resources, @"ConfigWindow"); SizeChanged += (o, args) => { GenQr(LinkTextBox.Text); }; Splitter2.DragDelta += (o, args) => { GenQr(LinkTextBox.Text); }; Closed += (o, e) => { _controller.ConfigChanged -= controller_ConfigChanged; ServerConfigViewModel.ServersChanged -= ServerViewModel_ServersChanged; }; _controller = controller; foreach (var name in from name in EncryptorFactory.RegisteredEncryptors.Keys let info = EncryptorFactory.GetEncryptorInfo(name) where info.Display select name) { EncryptionComboBox.Items.Add(name); } foreach (var protocol in Protocols) { ProtocolComboBox.Items.Add(protocol); } foreach (var obfs in ObfsStrings) { ObfsComboBox.Items.Add(obfs); } _controller.ConfigChanged += controller_ConfigChanged; ServerConfigViewModel.ServersChanged += ServerViewModel_ServersChanged; _focusIndex = focusIndex; ServersTreeView_OnSelectionChanged(this, new ItemSelectionChangedEventArgs()); }
public ConfigWindow(ShadowsocksController controller, int focusIndex) { InitializeComponent(); I18NUtil.SetLanguage(Resources, @"ConfigWindow"); SizeChanged += (o, args) => { GenQr(LinkTextBox.Text); }; Splitter2.DragDelta += (o, args) => { GenQr(LinkTextBox.Text); }; Closed += (o, e) => { _controller.ConfigChanged -= controller_ConfigChanged; ServerViewModel.ServersChanged -= ServerViewModel_ServersChanged; }; _controller = controller; foreach (var name in from name in EncryptorFactory.RegisteredEncryptors.Keys let info = EncryptorFactory.GetEncryptorInfo(name) where info.Display select name) { EncryptionComboBox.Items.Add(name); } foreach (var protocol in Protocols) { ProtocolComboBox.Items.Add(protocol); } foreach (var obfs in ObfsStrings) { ObfsComboBox.Items.Add(obfs); } _controller.ConfigChanged += controller_ConfigChanged; ServerViewModel.ServersChanged += ServerViewModel_ServersChanged; _focusIndex = focusIndex; ServerGroupBox.Visibility = ServersTreeView.SelectedValue == null ? Visibility.Hidden : Visibility.Visible; }
private async void BrowseCustom_Click(object sender, RoutedEventArgs e) { using (var openFileDialog = new CommonOpenFileDialog { IsFolderPicker = true, Title = "Select Folder" }) { var result = openFileDialog.ShowDialog(); if (result != CommonFileDialogResult.Ok) { return; } var path = openFileDialog.FileName; try { TbCustomPath.Text = path; await Service.Get <OsuFileScanner>().CancelTaskAsync(); await Service.Get <OsuFileScanner>().NewScanAndAddAsync(path); AppSettings.Default.General.CustomSongsPath = path; AppSettings.SaveDefault(); } catch (Exception ex) { Logger.Error(ex, "Error while scanning custom folder: {0}", path); MessageBox.Show(_configWindow, string.Format("{0}: {1}\r\n{2}", I18NUtil.GetString("err-custom-scan"), path, ex.Message), _configWindow.Title, MessageBoxButton.OK, MessageBoxImage.Error); } } }
public static void CheckPort(int port) { if (!IsPort(port)) { throw new ConfigurationException(I18NUtil.GetAppStringValue(@"PortOutOfRange")); } }
private async void CheckUpdate_Click(object sender, RoutedEventArgs e) { //todo: action CheckUpdate.IsEnabled = false; bool?hasNew; try { hasNew = await Service.Get <UpdateInst>().CheckUpdateAsync(); } catch (Exception ex) { MessageBox.Show(_configWindow, I18NUtil.GetString("ui-sets-content-errorWhileCheckingUpdate") + Environment.NewLine + (ex.InnerException?.Message ?? ex.Message), _configWindow.Title, MessageBoxButton.OK, MessageBoxImage.Error); return; } CheckUpdate.IsEnabled = true; AppSettings.Default.LastUpdateCheck = DateTime.Now; GetLastUpdate(); AppSettings.SaveDefault(); if (hasNew == true) { NewVersion.Visibility = Visibility.Visible; NewVersion_Click(sender, e); } else { MessageBox.Show(_configWindow, I18NUtil.GetString("ui-sets-content-alreadyNewest"), _configWindow.Title, MessageBoxButton.OK, MessageBoxImage.Information); } }
public PortSettingsWindow(ShadowsocksController controller) { InitializeComponent(); I18NUtil.SetLanguage(Resources, @"PortSettingsWindow"); Closed += (o, e) => { _controller.ConfigChanged -= controller_ConfigChanged; }; _controller = controller; LoadItems(); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is ProxyType type) { return(I18NUtil.GetAppStringValue(type.ToString())); } return(DependencyProperty.UnsetValue); }
private void Language_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { var locale = I18NUtil.AvailableLangDic[(string)e.AddedItems[0]]; I18NUtil.SwitchToLang(locale); AppSettings.Default.Interface.Locale = locale; AppSettings.SaveDefault(); }
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { if (Interlocked.Increment(ref _exited) == 1) { Logging.Log(LogLevel.Error, $@"{e.ExceptionObject}"); MessageBox.Show( $@"{I18NUtil.GetAppStringValue(@"UnexpectedError")}{Environment.NewLine}{e.ExceptionObject}", UpdateChecker.Name, MessageBoxButton.OK, MessageBoxImage.Error); Application.Current.Shutdown(); } }
public DnsSettingWindow() { InitializeComponent(); I18NUtil.SetLanguage(Resources, @"DnsSettingWindow"); Closed += (o, e) => { DnsSettingViewModel.DnsClientsChanged -= DnsSettingViewModel_DnsClientsChanged; }; DnsSettingViewModel.DnsClientsChanged += DnsSettingViewModel_DnsClientsChanged; LoadConfig(); }
private void LoadItems() { ProxyTypeComboBox.Items.Add(this.GetWindowStringValue(@"Socks5")); ProxyTypeComboBox.Items.Add(this.GetWindowStringValue(@"Http")); ProxyTypeComboBox.Items.Add(this.GetWindowStringValue(@"TcpPortTunnel")); foreach (var value in Enum.GetValues(typeof(LoadBalance))) { var str = value.ToString(); _balanceIndexMap.Add(str); BalanceComboBox.Items.Add(I18NUtil.GetAppStringValue(str)); } }
private static void SingleInstance_ArgumentsReceived(object sender, ArgumentsReceivedEventArgs e) { if (e.Args.Contains(Constants.ParameterMultiplyInstance)) { MessageBox.Show(I18NUtil.GetAppStringValue(@"SuccessiveInstancesMessage1") + Environment.NewLine + I18NUtil.GetAppStringValue(@"SuccessiveInstancesMessage2"), I18NUtil.GetAppStringValue(@"SuccessiveInstancesCaption"), MessageBoxButton.OK, MessageBoxImage.Information); } Application.Current.Dispatcher?.Invoke(() => { _viewController.ImportAddress(string.Join(Environment.NewLine, e.Args)); }); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (!(value is DeviceInfo b)) { return(value); } if (b.Equals(DeviceInfo.DefaultWasapi)) { return(I18NUtil.GetString("ui-sets-content-systemDefault")); } return($"({b.Provider}) {b.Name}"); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (!(value is IDeviceInfo b)) { return(value); } if (b.Equals(WasapiInfo.Default)) { return(I18NUtil.GetString("ui-sets-content-systemDefault")); } return($"({b.OutputMethod}) {b.FriendlyName}"); }
public SubscribeWindow(MainController controller) { InitializeComponent(); I18NUtil.SetLanguage(Resources, @"SubscribeWindow"); Closed += (o, e) => { controller.ConfigChanged -= controller_ConfigChanged; SubscribeWindowViewModel.SubscribesChanged -= SubscribeWindowViewModel_SubscribesChanged; }; _controller = controller; _controller.ConfigChanged += controller_ConfigChanged; LoadCurrentConfiguration(); SubscribeWindowViewModel.SubscribesChanged += SubscribeWindowViewModel_SubscribesChanged; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is bool enable) { if (targetType == typeof(string)) { return(I18NUtil.GetAppStringValue(enable ? @"Enabled" : @"Disabled")); } if (targetType == typeof(Brush)) { return(enable ? Brushes.Green : Brushes.Red); } } return(DependencyProperty.UnsetValue); }
private async void BtnDelCol_Click(object sender, RoutedEventArgs e) { var result = MessageBox.Show(_mainWindow, I18NUtil.GetString("ui-ensureRemoveCollection"), _mainWindow.Title, MessageBoxButton.OKCancel, MessageBoxImage.Exclamation); if (result != MessageBoxResult.OK) { return; } await using var dbContext = new ApplicationDbContext(); await dbContext.DeleteCollection(ViewModel.Collection); _mainWindow.SwitchRecent.IsChecked = true; await _mainWindow.UpdateCollections(); }
public SubscribeWindow(ShadowsocksController controller, UpdateSubscribeManager updateSubscribeManager, UpdateNode updateNodeChecker) { InitializeComponent(); I18NUtil.SetLanguage(Resources, @"SubscribeWindow"); Closed += (o, e) => { controller.ConfigChanged -= controller_ConfigChanged; SubscribeWindowViewModel.SubscribesChanged -= SubscribeWindowViewModel_SubscribesChanged; }; _controller = controller; _updateSubscribeManager = updateSubscribeManager; _updateNodeChecker = updateNodeChecker; _controller.ConfigChanged += controller_ConfigChanged; LoadCurrentConfiguration(); SubscribeWindowViewModel.SubscribesChanged += SubscribeWindowViewModel_SubscribesChanged; }
public ConfigWindow(ShadowsocksController controller, int focusIndex) { InitializeComponent(); I18NUtil.SetLanguage(Resources, @"ConfigWindow"); SizeChanged += (o, args) => { GenQr(LinkTextBox.Text); }; Splitter2.DragDelta += (o, args) => { GenQr(LinkTextBox.Text); }; Closed += (o, e) => { _controller.ConfigChanged -= controller_ConfigChanged; ServerViewModel.ServersChanged -= ServerViewModel_ServersChanged; }; _controller = controller; foreach (var name in from name in EncryptorFactory.GetEncryptor().Keys let info = EncryptorFactory.GetEncryptorInfo(name) where info.display select name) { EncryptionComboBox.Items.Add(name); } foreach (var protocol in Protocols) { ProtocolComboBox.Items.Add(protocol); } foreach (var obfs in ObfsStrings) { ObfsComboBox.Items.Add(obfs); } _controller.ConfigChanged += controller_ConfigChanged; LoadCurrentConfiguration(); ServerViewModel.ServersChanged += ServerViewModel_ServersChanged; if (focusIndex == -1) { var index = _modifiedConfiguration.index + 1; if (index < 0 || index > _modifiedConfiguration.configs.Count) { index = _modifiedConfiguration.configs.Count; } focusIndex = index; } if (focusIndex >= 0 && focusIndex < _modifiedConfiguration.configs.Count) { SetServerListSelectedIndex(focusIndex); } }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var shown = (bool)value; if (System.Convert.ToString(parameter) == "string") { return(shown ? I18NUtil.GetString("ui-closeDesktopLyric") : I18NUtil.GetString("ui-openDesktopLyric")); } else if (System.Convert.ToString(parameter) == "bool") { return(shown); } else { return(null); } }
private async void SyncNow_Click(object sender, RoutedEventArgs e) { try { await Service.Get <OsuDbInst>().SyncOsuDbAsync(AppSettings.Default.General.DbPath, false); AppSettings.Default.LastTimeScanOsuDb = DateTime.Now; AppSettings.SaveDefault(); } catch (Exception ex) { var path = AppSettings.Default.General.DbPath; Logger.Error(ex, "Error while scanning custom folder: {0}", path); MessageBox.Show(_configWindow, string.Format("{0}: {1}\r\n{2}", I18NUtil.GetString("err-custom-scan"), path, ex.Message), _configWindow.Title, MessageBoxButton.OK, MessageBoxImage.Error); } }
private void ThrowSocketException(ref Exception e) { // translate Microsoft language into human language // i.e. An attempt was made to access a socket in a way forbidden by its access permissions => Port already in use if (e is SocketException se) { switch (se.SocketErrorCode) { case SocketError.AddressAlreadyInUse: { e = new Exception(string.Format(I18NUtil.GetAppStringValue(@"PortInUse"), _config.localPort), se); break; } case SocketError.AccessDenied: { e = new Exception(string.Format(I18NUtil.GetAppStringValue(@"PortReserved"), _config.localPort), se); break; } } } }
private async void Application_Startup(object sender, StartupEventArgs e) { AppDomain.CurrentDomain.UnhandledException += OnCurrentDomainOnUnhandledException; DispatcherUnhandledException += Application_DispatcherUnhandledException; await EntryStartup.StartupAsync(); var controller = new ObservablePlayController(); controller.PlayList.Mode = AppSettings.Default.Play.PlayListMode; Service.TryAddInstance(controller); Service.TryAddInstance(new OsuDbInst()); Service.TryAddInstance(new LyricsInst()); Service.TryAddInstance(new UpdateInst()); Service.TryAddInstance(new OsuFileScanner()); Service.Get <LyricsInst>().ReloadLyricProvider(); Execute.SetMainThreadContext(); I18NUtil.LoadI18N(); }
private async void BrowseDb_Click(object sender, RoutedEventArgs e) { var result = CommonUtils.BrowseDb(out var path); if (!result.HasValue || !result.Value) { return; } try { await Service.Get <OsuDbInst>().SyncOsuDbAsync(path, false); TbDbPath.Text = path; AppSettings.Default.General.DbPath = path; AppSettings.SaveDefault(); } catch (Exception ex) { Logger.Error(ex, "Error while syncing osu!db: {0}", path); MessageBox.Show(_configWindow, string.Format("{0}: {1}\r\n{2}", I18NUtil.GetString("err-osudb-sync"), path, ex.Message), _configWindow.Title, MessageBoxButton.OK, MessageBoxImage.Error); } }
private void Reload() { if (_port_map_listener != null) { foreach (var l in _port_map_listener) { l.Stop(); } _port_map_listener = null; } // some logic in configuration updated the config when saving, we need to read it again _config = MergeGetConfiguration(_config); _config.FlushPortMapCache(); Logging.save_to_file = _config.logEnable; Logging.OpenLogFile(); ReloadIPRange(); var hostMap = new HostMap(); hostMap.LoadHostFile(); HostMap.Instance().Clear(hostMap); GlobalConfiguration.OSSupportsLocalIPv6 = Socket.OSSupportsIPv6; if (privoxyRunner == null) { privoxyRunner = new HttpProxyRunner(); } if (_pacDaemon == null) { _pacDaemon = new PACDaemon(); _pacDaemon.PACFileChanged += PacDaemon_PACFileChanged; _pacDaemon.UserRuleFileChanged += PacDaemon_UserRuleFileChanged; } if (_pacServer == null) { _pacServer = new PACServer(_pacDaemon); } _pacServer.UpdatePacUrl(_config); if (gfwListUpdater == null) { gfwListUpdater = new GFWListUpdater(); gfwListUpdater.UpdateCompleted += pacServer_PACUpdateCompleted; gfwListUpdater.Error += pacServer_PACUpdateError; } if (chnDomainsAndIPUpdater == null) { chnDomainsAndIPUpdater = new ChnDomainsAndIPUpdater(); chnDomainsAndIPUpdater.UpdateCompleted += pacServer_PACUpdateCompleted; chnDomainsAndIPUpdater.Error += pacServer_PACUpdateError; } _listener?.Stop(); privoxyRunner.Stop(); // don't put privoxyRunner.Start() before pacServer.Stop() // or bind will fail when switching bind address from 0.0.0.0 to 127.0.0.1 // though UseShellExecute is set to true now // http://stackoverflow.com/questions/10235093/socket-doesnt-close-after-application-exits-if-a-launched-process-is-open try { privoxyRunner.Start(_config); var local = new Local(_config, _transfer, _rangeSet); var services = new List <Listener.IService> { local, _pacServer, new APIServer(this, _config), new HttpPortForwarder(privoxyRunner.RunningPort, _config) }; _listener = new Listener(services); _listener.Start(_config, 0); } catch (Exception e) { // translate Microsoft language into human language // i.e. An attempt was made to access a socket in a way forbidden by its access permissions => Port already in use if (e is SocketException se) { switch (se.SocketErrorCode) { case SocketError.AddressAlreadyInUse: { e = new Exception(string.Format(I18NUtil.GetAppStringValue(@"PortInUse"), _config.localPort), se); break; } case SocketError.AccessDenied: { e = new Exception(string.Format(I18NUtil.GetAppStringValue(@"PortReserved"), _config.localPort), se); break; } } } Logging.LogUsefulException(e); ReportError(e); } _port_map_listener = new List <Listener>(); foreach (var pair in _config.GetPortMapCache()) { try { var local = new Local(_config, _transfer, _rangeSet); var services = new List <Listener.IService> { local }; var listener = new Listener(services); listener.Start(_config, pair.Key); _port_map_listener.Add(listener); } catch (Exception e) { // translate Microsoft language into human language // i.e. An attempt was made to access a socket in a way forbidden by its access permissions => Port already in use if (e is SocketException se) { if (se.SocketErrorCode == SocketError.AddressAlreadyInUse) { e = new Exception(string.Format(I18NUtil.GetAppStringValue(@"PortInUse"), pair.Key), e); } else if (se.SocketErrorCode == SocketError.AccessDenied) { e = new Exception(string.Format(I18NUtil.GetAppStringValue(@"PortReserved"), pair.Key), se); } } Logging.LogUsefulException(e); ReportError(e); } } Application.Current.Dispatcher?.Invoke(() => { ConfigChanged?.Invoke(this, new EventArgs()); }); UpdateSystemProxy(); Utils.ReleaseMemory(); }