Пример #1
0
        private void _clientFilterAddButton_Click(object sender, RoutedEventArgs e)
        {
            if (_clientFiltersConditionTextBox.Text == "") return;

            try
            {
                var connectionType = (ConnectionType)_clientFiltersConnectionTypeComboBox.SelectedItem;

                var uriCondition = new UriCondition(_clientFiltersConditionTextBox.Text);
                string proxyUri = null;
                string option = null;

                if (!string.IsNullOrWhiteSpace(_clientFiltersProxyUriTextBox.Text))
                {
                    proxyUri = _clientFiltersProxyUriTextBox.Text;
                    if (!Regex.IsMatch(proxyUri, @"^(.+?):(.+)$")) return;
                }

                if (connectionType == ConnectionType.Socks5Proxy
                    || connectionType == ConnectionType.HttpProxy)
                {
                    if (proxyUri == null) return;
                }

                if (!string.IsNullOrWhiteSpace(_clientFiltersOptionTextBox.Text))
                {
                    option = _clientFiltersOptionTextBox.Text;
                }

                var connectionFilter = new ConnectionFilter(connectionType, proxyUri, uriCondition, option);

                if (_clientFilters.Any(n => n == connectionFilter)) return;
                _clientFilters.Add(connectionFilter);
            }
            catch (Exception)
            {

            }

            _clientFiltersListViewUpdate();
        }
Пример #2
0
        private void _clientFilterEditButton_Click(object sender, RoutedEventArgs e)
        {
            if (_clientFiltersConditionTextBox.Text == "") return;

            int selectIndex = _clientFiltersListView.SelectedIndex;
            if (selectIndex == -1) return;

            try
            {
                var connectionType = (ConnectionType)_clientFiltersConnectionTypeComboBox.SelectedItem;

                string proxyUri = null;
                var uriCondition = new UriCondition(_clientFiltersConditionTextBox.Text);
                string option = null;

                if (!string.IsNullOrWhiteSpace(_clientFiltersProxyUriTextBox.Text))
                {
                    proxyUri = _clientFiltersProxyUriTextBox.Text;
                }

                if (connectionType == ConnectionType.Socks5Proxy
                   || connectionType == ConnectionType.HttpProxy)
                {
                    if (proxyUri == null) return;
                }

                if (!string.IsNullOrWhiteSpace(_clientFiltersOptionTextBox.Text))
                {
                    option = _clientFiltersOptionTextBox.Text;
                }

                var connectionFilter = new ConnectionFilter(connectionType, proxyUri, uriCondition, option);

                if (_clientFilters.Any(n => n == connectionFilter)) return;
                _clientFilters.Set(selectIndex, connectionFilter);

                _clientFiltersListView.SelectedIndex = selectIndex;
            }
            catch (Exception)
            {
                return;
            }

            _clientFiltersListViewUpdate();
        }
Пример #3
0
        private void _clientFiltersListViewPasteMenuItem_Click(object sender, RoutedEventArgs e)
        {
            var regex = new Regex("^(.+?) \"(.*?)\" \"(.+)\"$");

            foreach (var line in Clipboard.GetText().Split('\r', '\n'))
            {
                try
                {
                    var match = regex.Match(line);
                    if (!match.Success) continue;

                    var connectionType = (ConnectionType)Enum.Parse(typeof(ConnectionType), match.Groups[1].Value);
                    var uriCondition = new UriCondition(match.Groups[3].Value);

                    string proxyUri = null;

                    if (!string.IsNullOrWhiteSpace(match.Groups[2].Value))
                    {
                        proxyUri = match.Groups[2].Value;
                        if (!Regex.IsMatch(proxyUri, @"^(.+?):(.+)$")) continue;
                    }

                    if (connectionType == ConnectionType.Socks5Proxy
                        || connectionType == ConnectionType.HttpProxy)
                    {
                        if (proxyUri == null) return;
                    }

                    var connectionFilter = new ConnectionFilter(connectionType, proxyUri, uriCondition, null);

                    if (_clientFilters.Any(n => n == connectionFilter)) continue;
                    _clientFilters.Add(connectionFilter);
                }
                catch (Exception)
                {

                }
            }

            _clientFiltersListViewUpdate();
        }