Example #1
0
        private void btnNew_Click(object sender, EventArgs e)
        {
            DialogResult dr = DlgOptionsProxyGroup.Instance.ShowDialog(
                this, new ProxyGroup());

            if (dr == DialogResult.OK)
            {
                ProxyGroup   pg   = new ProxyGroup(DlgOptionsProxyGroup.Instance.DlgProxyGroup);
                ListViewItem item = CreateListViewItem(pg);
                if (lvProxyGroups.SelectedItems.Count <= 0)
                {
                    // add to the tail
                    m_dlgProfile.m_listProxyGroups.Add(pg);
                    lvProxyGroups.Items.Add(item);
                }
                else
                {
                    // insert at current selected item
                    int idx = lvProxyGroups.SelectedItems[0].Index;
                    m_dlgProfile.m_listProxyGroups.Insert(idx, pg);
                    lvProxyGroups.Items.Insert(idx, item);
                }
                item.Selected = true;
            }
            lvProxyGroups.Focus();
        }
Example #2
0
 public ProxyGroup(ProxyGroup pg)
 {
     m_szName         = pg.m_szName;
     m_isEnabled      = pg.m_isEnabled;
     m_iSelectedIndex = pg.m_iSelectedIndex;
     m_applyRule      = new ApplyRule(pg.m_applyRule);
     m_listProxyItems = new List <ProxyItem>(pg.m_listProxyItems);
 }
 public DialogResult ShowDialog(IWin32Window owner, ProxyGroup pg)
 {
     Logger.V(">> DlgOptionsProxyGroup.ShowDialog");
     m_bExitByOK = false;
     SetDialogLayout(pg);
     DialogResult dr = ShowDialog(owner);
     Logger.V("<< DlgOptionsProxyGroup.ShowDialog : " + dr.ToString());
     return dr;
 }
Example #4
0
        private ProxyItem FindMatchedProxyItem()
        {
            Logger.V(">> AppManager.FindMatchedProxyItem");
            ProxyItem ret = null;

            for (int i = 0; i < m_profile.m_listProxyGroups.Count; ++i)
            {
                ProxyGroup pg = m_profile.m_listProxyGroups[i];

                if (!pg.m_isEnabled)
                {
                    continue;
                }
                if (!IsRuleMatched(pg.m_applyRule))
                {
                    continue;
                }

                if (pg.m_iSelectedIndex <= 0 ||
                    pg.m_iSelectedIndex > pg.m_listProxyItems.Count)
                {
                    // reset the invalid SelectedIndex value
                    pg.m_iSelectedIndex = 0;
                }
                else if (pg.m_listProxyItems[pg.m_iSelectedIndex - 1].m_isEnabled)
                {
                    // directly get the specified selected proxy item
                    ret             = pg.m_listProxyItems[pg.m_iSelectedIndex - 1];
                    m_idxProxyGroup = i;
                    break;
                }

                // try to get the proxy item by default routine
                for (int j = 0; j < pg.m_listProxyItems.Count; ++j)
                {
                    ProxyItem pi = pg.m_listProxyItems[j];
                    if (pi.m_isEnabled)
                    {
                        ret = pi;
                        pg.m_iSelectedIndex = j + 1;
                        m_idxProxyGroup     = i;
                        break;
                    }
                }
                if (ret != null)
                {
                    break;
                }
                else
                {
                    pg.m_iSelectedIndex = 0;
                }
            }
            Logger.V("<< AppManager.FindMatchedProxyItem");
            return(ret);
        }
        public DialogResult ShowDialog(IWin32Window owner, ProxyGroup pg)
        {
            Logger.V(">> DlgOptionsProxyGroup.ShowDialog");
            m_bExitByOK = false;
            SetDialogLayout(pg);
            DialogResult dr = ShowDialog(owner);

            Logger.V("<< DlgOptionsProxyGroup.ShowDialog : " + dr.ToString());
            return(dr);
        }
Example #6
0
        private ListViewItem CreateListViewItem(ProxyGroup pg)
        {
            ListViewItem item = new ListViewItem();

            item.Text = pg.m_szName;
            item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
                                                               (pg.m_isEnabled ? "Enable" : "Disable")));
            item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
                                                               (pg.m_listProxyItems == null
                        ? "0" : pg.m_listProxyItems.Count.ToString())));
            return(item);
        }
Example #7
0
        private void UserRequest_SelectProxyFromCurrentGroup(object sender, EventArgs e)
        {
            Logger.V(">> FormMain.UserRequest_SelectProxyFromCurrentGroup");
            var        mi = sender as MenuItem;
            ProxyGroup pg = m_appManagerRef.AppProfile.m_listProxyGroups[
                m_appManagerRef.AutoModeProxyGroupIndex];

            pg.m_iSelectedIndex = mi.Index + 1;
            ProxyItem pi = pg.m_listProxyItems[pg.m_iSelectedIndex - 1];

            Logger.I("UserRequest :: Select proxy item from the current group ("
                     + pi.m_szProxyAddr + ").");
            m_appManagerRef.EnableProxy(pi);
            Profile.Save(m_appManagerRef.AppProfile);
            Logger.V("<< FormMain.UserRequest_SelectProxyFromCurrentGroup");
        }
Example #8
0
        private void EditProxyGroup(ListViewItem item)
        {
            ProxyGroup   pg = m_dlgProfile.m_listProxyGroups[item.Index];
            DialogResult dr = DlgOptionsProxyGroup.Instance.ShowDialog(this, pg);

            if ((dr == DialogResult.OK) && (!pg.Equals(DlgOptionsProxyGroup.Instance.DlgProxyGroup)))
            {
                m_dlgProfile.m_listProxyGroups[item.Index] = new ProxyGroup(
                    DlgOptionsProxyGroup.Instance.DlgProxyGroup);
                pg = m_dlgProfile.m_listProxyGroups[item.Index];
                item.SubItems[0].Text = pg.m_szName;
                item.SubItems[1].Text = (pg.m_isEnabled ? "Enable" : "Disable");
                item.SubItems[2].Text = (pg.m_listProxyItems == null
                    ? "0" : pg.m_listProxyItems.Count.ToString());
            }
        }
Example #9
0
        private void btnDown_Click(object sender, EventArgs e)
        {
            if (HasListViewItemSelected())
            {
                int idx = lvProxyGroups.SelectedItems[0].Index;
                if (idx < lvProxyGroups.Items.Count - 1)
                {
                    ProxyGroup pg = m_dlgProfile.m_listProxyGroups[idx];
                    m_dlgProfile.m_listProxyGroups.RemoveAt(idx);
                    m_dlgProfile.m_listProxyGroups.Insert(idx + 1, pg);

                    ListViewItem item = lvProxyGroups.Items[idx];
                    lvProxyGroups.Items.RemoveAt(idx);
                    lvProxyGroups.Items.Insert(idx + 1, item);
                }
            }
            lvProxyGroups.Focus();
        }
        private void SetDialogLayout(ProxyGroup pg)
        {
            if (pg != null)
            {
                m_dlgProxyGroup = new ProxyGroup(pg);
            }
            else
            {
                m_dlgProxyGroup = new ProxyGroup();
            }

            // proxy group name
            tbName.Text = m_dlgProxyGroup.m_szName;
            // proxy group enable/disable
            cbEnable.Checked = m_dlgProxyGroup.m_isEnabled;

            // proxy group items
            dgvProxyItems.Rows.Clear();
            if (m_dlgProxyGroup.m_listProxyItems != null)
            {
                foreach (ProxyItem pi in m_dlgProxyGroup.m_listProxyItems)
                {
                    int idx = dgvProxyItems.Rows.Add();
                    dgvProxyItems.Rows[idx].Cells[IDX_IS_ENABLED].Value = pi.m_isEnabled;
                    dgvProxyItems.Rows[idx].Cells[IDX_PROXY_ADDR].Value = pi.m_szProxyAddr;
                    dgvProxyItems.Rows[idx].Cells[IDX_BYPASS].Value     = pi.m_szBypass;
                }
            }

            // proxy group apply rule
            if (m_dlgProxyGroup.m_applyRule == null)
            {
                m_dlgProxyGroup.m_applyRule = new ApplyRule();
            }
            // filter network adapter id
            cbFilterId.Checked = m_dlgProxyGroup.m_applyRule.m_bIdFilter;
            tbFilterId.Text    = m_dlgProxyGroup.m_applyRule.m_szIdFilter;
            tbFilterId.Enabled = cbFilterId.Checked;
            // filter network adapter name
            cbFilterName.Checked = m_dlgProxyGroup.m_applyRule.m_bNameFilter;
            tbFilterName.Text    = m_dlgProxyGroup.m_applyRule.m_szNameFilter;
            tbFilterName.Enabled = cbFilterName.Checked;
            // filter ip addr
            cbFilterIpAddr.Checked = m_dlgProxyGroup.m_applyRule.m_bIpAddrFilter;
            tbFilterIpAddr.Text    = m_dlgProxyGroup.m_applyRule.m_szIpAddrFilter;
            tbFilterIpAddr.Enabled = cbFilterIpAddr.Checked;
            // filter subnet mask
            cbFilterMask.Checked = m_dlgProxyGroup.m_applyRule.m_bSubMaskFilter;
            tbFilterMask.Text    = m_dlgProxyGroup.m_applyRule.m_szSubMaskFilter;
            tbFilterMask.Enabled = cbFilterMask.Checked;
            // filter gateway
            cbFilterGateway.Checked = m_dlgProxyGroup.m_applyRule.m_bGatewayFilter;
            tbFilterGateway.Text    = m_dlgProxyGroup.m_applyRule.m_szGatewayFilter;
            tbFilterGateway.Enabled = cbFilterGateway.Checked;
            // filter dns addr
            cbFilterDns.Checked = m_dlgProxyGroup.m_applyRule.m_bDnsAddrFilter;
            tbFilterDns.Text    = m_dlgProxyGroup.m_applyRule.m_szDnsAddrFilter;
            tbFilterDns.Enabled = cbFilterDns.Checked;
            // filter dns suffix
            cbFilterDnsSuffix.Checked = m_dlgProxyGroup.m_applyRule.m_bDnsSuffixFilter;
            tbFilterDnsSuffix.Text    = m_dlgProxyGroup.m_applyRule.m_szDnsSuffixFilter;
            tbFilterDnsSuffix.Enabled = cbFilterDnsSuffix.Checked;
        }
Example #11
0
 private ListViewItem CreateListViewItem(ProxyGroup pg)
 {
     ListViewItem item = new ListViewItem();
     item.Text = pg.m_szName;
     item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
         (pg.m_isEnabled ? "Enable" : "Disable")));
     item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
             (pg.m_listProxyItems == null
                 ? "0" : pg.m_listProxyItems.Count.ToString())));
     return item;
 }
Example #12
0
 private void btnNew_Click(object sender, EventArgs e)
 {
     DialogResult dr = DlgOptionsProxyGroup.Instance.ShowDialog(
         this, new ProxyGroup());
     if (dr == DialogResult.OK) {
         ProxyGroup pg = new ProxyGroup(DlgOptionsProxyGroup.Instance.DlgProxyGroup);
         ListViewItem item = CreateListViewItem(pg);
         if (lvProxyGroups.SelectedItems.Count <= 0) {
             // add to the tail
             m_dlgProfile.m_listProxyGroups.Add(pg);
             lvProxyGroups.Items.Add(item);
         } else {
             // insert at current selected item
             int idx = lvProxyGroups.SelectedItems[0].Index;
             m_dlgProfile.m_listProxyGroups.Insert(idx, pg);
             lvProxyGroups.Items.Insert(idx, item);
         }
         item.Selected = true;
     }
     lvProxyGroups.Focus();
 }
Example #13
0
        private void UpdateGui_NotifyIconMenuProxySelection()
        {
            switch (m_appManagerRef.CurrWorkMode)
            {
            case WorkMode.Auto: {
                if (!IeProxyOptions.ProxyEnable)
                {
                    // fall through
                    goto case WorkMode.Direct;
                }
                ProxyGroup pg = m_appManagerRef.AppProfile.m_listProxyGroups[
                    m_appManagerRef.AutoModeProxyGroupIndex];
                MenuItem[] mis = new MenuItem[pg.m_listProxyItems.Count];
                for (int i = 0; i < pg.m_listProxyItems.Count; ++i)
                {
                    mis[i] = new MenuItem(pg.m_listProxyItems[i].m_szProxyAddr);
                    if (!pg.m_listProxyItems[i].m_isEnabled)
                    {
                        mis[i].Enabled = false;
                    }
                    else
                    {
                        mis[i].Click += new System.EventHandler(
                            UserRequest_SelectProxyFromCurrentGroup);
                    }
                    mis[i].Checked    = false;
                    mis[i].RadioCheck = true;
                }
                mis[pg.m_iSelectedIndex - 1].Checked       = true;
                m_arrayMenuItems[m_idxNiCtxProxySelection] = new MenuItem(
                    "Select Proxy from Group", mis);
                notifyIcon.ContextMenu = new ContextMenu(m_arrayMenuItems);
                break;
            }

            case WorkMode.Direct: {
                m_arrayMenuItems[m_idxNiCtxProxySelection] = new MenuItem(
                    "Select Proxy: N/A");
                m_arrayMenuItems[m_idxNiCtxProxySelection].Enabled = false;
                notifyIcon.ContextMenu = new ContextMenu(m_arrayMenuItems);
                break;
            }

            case WorkMode.Proxy: {
                string proxyAddr        = IeProxyOptions.ProxyAddr;
                string bypass           = IeProxyOptions.Bypass;
                bool   autoConfDisabled = IeProxyOptions.AutoConfDisabled;
                bool   found            = false;

                List <ProxyGroup> listPg = m_appManagerRef.AppProfile.m_listProxyGroups;
                MenuItem[]        misPg  = new MenuItem[listPg.Count];

                for (int i = 0; i < listPg.Count; ++i)
                {
                    List <ProxyItem> listPi = listPg[i].m_listProxyItems;
                    MenuItem[]       mis;
                    if (listPi.Count > 0)
                    {
                        mis = new MenuItem[listPi.Count];
                        for (int j = 0; j < listPi.Count; ++j)
                        {
                            mis[j] = new MenuItem(listPi[j].m_szProxyAddr,
                                                  UserRequest_SelectProxyFromPool);
                            mis[j].Checked    = false;
                            mis[j].RadioCheck = true;

                            if (!found &&
                                listPi[j].m_szProxyAddr.Equals(proxyAddr) &&
                                listPi[j].m_szBypass.Equals(bypass) &&
                                listPi[j].m_isAutoConfDisabled.Equals(autoConfDisabled))
                            {
                                mis[j].Checked = true;
                                found          = true;
                            }
                        }
                    }
                    else
                    {
                        mis            = new MenuItem[1];
                        mis[0]         = new MenuItem("(N/A)");
                        mis[0].Enabled = false;
                    }
                    misPg[i] = new MenuItem(listPg[i].m_szName, mis);
                }
                m_arrayMenuItems[m_idxNiCtxProxySelection] = new MenuItem(
                    "Select Proxy from Pool", misPg);
                notifyIcon.ContextMenu = new ContextMenu(m_arrayMenuItems);
                break;
            }
            }
        }
        private void SetDialogLayout(ProxyGroup pg)
        {
            if (pg != null) {
                m_dlgProxyGroup = new ProxyGroup(pg);
            } else {
                m_dlgProxyGroup = new ProxyGroup();
            }

            // proxy group name
            tbName.Text = m_dlgProxyGroup.m_szName;
            // proxy group enable/disable
            cbEnable.Checked = m_dlgProxyGroup.m_isEnabled;

            // proxy group items
            dgvProxyItems.Rows.Clear();
            if (m_dlgProxyGroup.m_listProxyItems != null) {
                foreach (ProxyItem pi in m_dlgProxyGroup.m_listProxyItems) {
                    int idx = dgvProxyItems.Rows.Add();
                    dgvProxyItems.Rows[idx].Cells[IDX_IS_ENABLED].Value = pi.m_isEnabled;
                    dgvProxyItems.Rows[idx].Cells[IDX_PROXY_ADDR].Value = pi.m_szProxyAddr;
                    dgvProxyItems.Rows[idx].Cells[IDX_BYPASS].Value = pi.m_szBypass;
                }
            }

            // proxy group apply rule
            if (m_dlgProxyGroup.m_applyRule == null) {
                m_dlgProxyGroup.m_applyRule = new ApplyRule();
            }
            // filter network adapter id
            cbFilterId.Checked = m_dlgProxyGroup.m_applyRule.m_bIdFilter;
            tbFilterId.Text = m_dlgProxyGroup.m_applyRule.m_szIdFilter;
            tbFilterId.Enabled = cbFilterId.Checked;
            // filter network adapter name
            cbFilterName.Checked = m_dlgProxyGroup.m_applyRule.m_bNameFilter;
            tbFilterName.Text = m_dlgProxyGroup.m_applyRule.m_szNameFilter;
            tbFilterName.Enabled = cbFilterName.Checked;
            // filter ip addr
            cbFilterIpAddr.Checked = m_dlgProxyGroup.m_applyRule.m_bIpAddrFilter;
            tbFilterIpAddr.Text = m_dlgProxyGroup.m_applyRule.m_szIpAddrFilter;
            tbFilterIpAddr.Enabled = cbFilterIpAddr.Checked;
            // filter subnet mask
            cbFilterMask.Checked = m_dlgProxyGroup.m_applyRule.m_bSubMaskFilter;
            tbFilterMask.Text = m_dlgProxyGroup.m_applyRule.m_szSubMaskFilter;
            tbFilterMask.Enabled = cbFilterMask.Checked;
            // filter gateway
            cbFilterGateway.Checked = m_dlgProxyGroup.m_applyRule.m_bGatewayFilter;
            tbFilterGateway.Text = m_dlgProxyGroup.m_applyRule.m_szGatewayFilter;
            tbFilterGateway.Enabled = cbFilterGateway.Checked;
            // filter dns addr
            cbFilterDns.Checked = m_dlgProxyGroup.m_applyRule.m_bDnsAddrFilter;
            tbFilterDns.Text = m_dlgProxyGroup.m_applyRule.m_szDnsAddrFilter;
            tbFilterDns.Enabled = cbFilterDns.Checked;
            // filter dns suffix
            cbFilterDnsSuffix.Checked = m_dlgProxyGroup.m_applyRule.m_bDnsSuffixFilter;
            tbFilterDnsSuffix.Text = m_dlgProxyGroup.m_applyRule.m_szDnsSuffixFilter;
            tbFilterDnsSuffix.Enabled = cbFilterDnsSuffix.Checked;
        }
Example #15
0
 public ProxyGroup(ProxyGroup pg)
 {
     m_szName = pg.m_szName;
     m_isEnabled = pg.m_isEnabled;
     m_iSelectedIndex = pg.m_iSelectedIndex;
     m_applyRule = new ApplyRule(pg.m_applyRule);
     m_listProxyItems = new List<ProxyItem>(pg.m_listProxyItems);
 }