Ejemplo n.º 1
0
        /// <summary>
        /// Displays the applications in the control.
        /// </summary>
        internal void Initialize()
        {
            ItemsLV.Items.Clear();

            try
            {
                IList <HttpAccessRule> accessRules = HttpAccessRule.GetAccessRules(null);

                if (accessRules == null || accessRules.Count == 0)
                {
                    Instructions = "No HTTP access rules defined.";
                    AdjustColumns();
                    return;
                }

                // display the list.
                foreach (HttpAccessRule accessRule in accessRules)
                {
                    AddItem(accessRule);
                }

                AdjustColumns();
            }
            catch (Exception e)
            {
                Instructions = e.Message;
                AdjustColumns();
            }
        }
Ejemplo n.º 2
0
        private void DeleteMI_Click(object sender, EventArgs e)
        {
            try
            {
                if (ItemsLV.SelectedItems.Count < 1)
                {
                    return;
                }

                DialogResult result = MessageBox.Show(
                    "Are you sure you wish to delete the rules from the list?",
                    "Delete Certificate",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Exclamation);

                if (result != DialogResult.Yes)
                {
                    return;
                }

                // remove the items.
                Dictionary <string, List <HttpAccessRule> > rulesToDelete = new Dictionary <string, List <HttpAccessRule> >();

                while (ItemsLV.SelectedItems.Count > 0)
                {
                    HttpAccessRule rule = ItemsLV.SelectedItems[0].Tag as HttpAccessRule;

                    List <HttpAccessRule> rules = null;

                    if (!rulesToDelete.TryGetValue(rule.UrlPrefix, out rules))
                    {
                        rulesToDelete[rule.UrlPrefix] = rules = new List <HttpAccessRule>();
                    }

                    rules.Add(rule);
                    ItemsLV.SelectedItems[0].Remove();
                }

                // delete rules.
                foreach (KeyValuePair <string, List <HttpAccessRule> > pair in rulesToDelete)
                {
                    IList <HttpAccessRule> existingRules = HttpAccessRule.GetAccessRules(pair.Key);

                    List <HttpAccessRule> remainingRules = new List <HttpAccessRule>();

                    for (int ii = 0; ii < existingRules.Count; ii++)
                    {
                        HttpAccessRule existingRule = existingRules[ii];

                        bool found = false;

                        for (int jj = 0; jj < pair.Value.Count; jj++)
                        {
                            HttpAccessRule ruleToDelete = pair.Value[jj];

                            if (ruleToDelete.IdentityName == existingRule.IdentityName)
                            {
                                continue;
                            }

                            if (ruleToDelete.Right == existingRule.Right)
                            {
                                continue;
                            }

                            found = true;
                            break;
                        }

                        if (!found)
                        {
                            remainingRules.Add(existingRule);
                        }
                    }

                    HttpAccessRule.SetAccessRules(pair.Key, remainingRules, true);
                }
            }
            catch (Exception exception)
            {
                GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
            }
        }