private void m_pTab_Security_UsersOrGroups_SelectedIndexChanged(object sender, EventArgs e) { this.m_EvensLocked = true; if (this.m_pTab_Security_UsersOrGroups.SelectedItems.Count > 0) { this.mt_Tab_Security_UsersOrGroupsToolbar.Items[1].Enabled = true; if (!this.m_pTab_Security_InheritAcl.Checked) { this.m_pTab_Security_Permissions.Enabled = true; } ListViewItem listViewItem = this.m_pTab_Security_UsersOrGroups.SelectedItems[0]; UserFolderAcl userFolderAcl = (UserFolderAcl)listViewItem.Tag; if ((userFolderAcl.Permissions & IMAP_ACL_Flags.l) != IMAP_ACL_Flags.None) { this.m_pTab_Security_Permissions.Items[1].Checked = true; } if ((userFolderAcl.Permissions & IMAP_ACL_Flags.r) != IMAP_ACL_Flags.None) { this.m_pTab_Security_Permissions.Items[3].Checked = true; } if ((userFolderAcl.Permissions & IMAP_ACL_Flags.s) != IMAP_ACL_Flags.None) { this.m_pTab_Security_Permissions.Items[6].Checked = true; } if ((userFolderAcl.Permissions & IMAP_ACL_Flags.w) != IMAP_ACL_Flags.None) { this.m_pTab_Security_Permissions.Items[6].Checked = true; } if ((userFolderAcl.Permissions & IMAP_ACL_Flags.i) != IMAP_ACL_Flags.None) { this.m_pTab_Security_Permissions.Items[4].Checked = true; } if ((userFolderAcl.Permissions & IMAP_ACL_Flags.p) != IMAP_ACL_Flags.None) { this.m_pTab_Security_Permissions.Items[4].Checked = true; } if ((userFolderAcl.Permissions & IMAP_ACL_Flags.c) != IMAP_ACL_Flags.None) { this.m_pTab_Security_Permissions.Items[2].Checked = true; } if ((userFolderAcl.Permissions & IMAP_ACL_Flags.d) != IMAP_ACL_Flags.None) { this.m_pTab_Security_Permissions.Items[5].Checked = true; } if ((userFolderAcl.Permissions & IMAP_ACL_Flags.a) != IMAP_ACL_Flags.None) { this.m_pTab_Security_Permissions.Items[0].Checked = true; } } else { this.mt_Tab_Security_UsersOrGroupsToolbar.Items[1].Enabled = false; this.m_pTab_Security_Permissions.Enabled = false; foreach (ListViewItem listViewItem2 in this.m_pTab_Security_Permissions.Items) { listViewItem2.Checked = false; } } this.m_EvensLocked = false; }
private void m_pTab_Security_Permissions_ItemChecked(object sender, ItemCheckedEventArgs e) { if (m_EvensLocked) { return; } // See if permissions has changed, if so update them. if (m_pTab_Security_UsersOrGroups.SelectedItems.Count > 0) { //--- Construct ACl flags ---------------// IMAP_ACL_Flags acl = IMAP_ACL_Flags.None; if (m_pTab_Security_Permissions.Items[0].Checked) { acl |= IMAP_ACL_Flags.a; } if (m_pTab_Security_Permissions.Items[1].Checked) { acl |= IMAP_ACL_Flags.l; } if (m_pTab_Security_Permissions.Items[2].Checked) { acl |= IMAP_ACL_Flags.c; } if (m_pTab_Security_Permissions.Items[3].Checked) { acl |= IMAP_ACL_Flags.r; } if (m_pTab_Security_Permissions.Items[4].Checked) { acl |= IMAP_ACL_Flags.i | IMAP_ACL_Flags.p; } if (m_pTab_Security_Permissions.Items[5].Checked) { acl |= IMAP_ACL_Flags.d; } if (m_pTab_Security_Permissions.Items[6].Checked) { acl |= IMAP_ACL_Flags.w | IMAP_ACL_Flags.s; } //--------------------------------------// UserFolderAcl aclEntry = (UserFolderAcl)m_pTab_Security_UsersOrGroups.SelectedItems[0].Tag; if (aclEntry.Permissions != acl) { aclEntry.Permissions = acl; } } }
private void m_pTab_Security_InheritAcl_CheckStateChanged(object sender, EventArgs e) { // Events are locked, just do nothing if (m_EvensLocked) { return; } m_EvensLocked = true; if (m_pTab_Security_InheritAcl.Checked) { string text = "Do you want to inherit all permissions from parent folder and loose current permissions from current folder ?"; if (MessageBox.Show(this, text, "Warning:", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { mt_Tab_Security_UsersOrGroupsToolbar.Enabled = false; m_pTab_Security_UsersOrGroups.Enabled = false; m_pTab_Security_Permissions.Enabled = false; foreach (ListViewItem it in m_pTab_Security_UsersOrGroups.Items) { UserFolderAcl acl = (UserFolderAcl)it.Tag; acl.Owner.Remove(acl); } LoadACL(); } else { // Undo check (make checkbox unchecked) m_pTab_Security_InheritAcl.Checked = false; mt_Tab_Security_UsersOrGroupsToolbar.Enabled = true; m_pTab_Security_UsersOrGroups.Enabled = true; m_pTab_Security_Permissions.Enabled = true; } } else { mt_Tab_Security_UsersOrGroupsToolbar.Enabled = true; m_pTab_Security_UsersOrGroups.Enabled = true; m_pTab_Security_Permissions.Enabled = true; m_pTab_Security_UsersOrGroups.Items.Clear(); m_pTab_Security_UsersOrGroups_SelectedIndexChanged(null, null); } m_EvensLocked = false; }
private void m_pTab_Security_Permissions_ItemChecked(object sender, ItemCheckedEventArgs e) { if (this.m_EvensLocked) { return; } if (this.m_pTab_Security_UsersOrGroups.SelectedItems.Count > 0) { IMAP_ACL_Flags iMAP_ACL_Flags = IMAP_ACL_Flags.None; if (this.m_pTab_Security_Permissions.Items[0].Checked) { iMAP_ACL_Flags |= IMAP_ACL_Flags.a; } if (this.m_pTab_Security_Permissions.Items[1].Checked) { iMAP_ACL_Flags |= IMAP_ACL_Flags.l; } if (this.m_pTab_Security_Permissions.Items[2].Checked) { iMAP_ACL_Flags |= IMAP_ACL_Flags.c; } if (this.m_pTab_Security_Permissions.Items[3].Checked) { iMAP_ACL_Flags |= IMAP_ACL_Flags.r; } if (this.m_pTab_Security_Permissions.Items[4].Checked) { iMAP_ACL_Flags |= (IMAP_ACL_Flags)48; } if (this.m_pTab_Security_Permissions.Items[5].Checked) { iMAP_ACL_Flags |= IMAP_ACL_Flags.d; } if (this.m_pTab_Security_Permissions.Items[6].Checked) { iMAP_ACL_Flags |= (IMAP_ACL_Flags)12; } UserFolderAcl userFolderAcl = (UserFolderAcl)this.m_pTab_Security_UsersOrGroups.SelectedItems[0].Tag; if (userFolderAcl.Permissions != iMAP_ACL_Flags) { userFolderAcl.Permissions = iMAP_ACL_Flags; } } }
private void m_pTab_Security_Permissions_ItemCheck(object sender, ItemCheckEventArgs e) { if (this.m_EvensLocked) { return; } if (this.m_pTab_Security_UsersOrGroups.SelectedItems.Count > 0) { IMAP_ACL_Flags iMAP_ACL_Flags = IMAP_ACL_Flags.None; if ((e.Index == 0 && e.NewValue == CheckState.Checked) || (e.Index != 0 && this.m_pTab_Security_Permissions.Items[0].Checked)) { iMAP_ACL_Flags |= IMAP_ACL_Flags.a; } if ((e.Index == 1 && e.NewValue == CheckState.Checked) || (e.Index != 1 && this.m_pTab_Security_Permissions.Items[1].Checked)) { iMAP_ACL_Flags |= IMAP_ACL_Flags.l; } if ((e.Index == 2 && e.NewValue == CheckState.Checked) || (e.Index != 2 && this.m_pTab_Security_Permissions.Items[2].Checked)) { iMAP_ACL_Flags |= IMAP_ACL_Flags.c; } if ((e.Index == 3 && e.NewValue == CheckState.Checked) || (e.Index != 3 && this.m_pTab_Security_Permissions.Items[3].Checked)) { iMAP_ACL_Flags |= IMAP_ACL_Flags.r; } if ((e.Index == 4 && e.NewValue == CheckState.Checked) || (e.Index != 4 && this.m_pTab_Security_Permissions.Items[4].Checked)) { iMAP_ACL_Flags |= (IMAP_ACL_Flags)48; } if ((e.Index == 5 && e.NewValue == CheckState.Checked) || (e.Index != 5 && this.m_pTab_Security_Permissions.Items[5].Checked)) { iMAP_ACL_Flags |= IMAP_ACL_Flags.d; } if ((e.Index == 6 && e.NewValue == CheckState.Checked) || (e.Index != 6 && this.m_pTab_Security_Permissions.Items[6].Checked)) { iMAP_ACL_Flags |= (IMAP_ACL_Flags)12; } UserFolderAcl userFolderAcl = (UserFolderAcl)this.m_pTab_Security_UsersOrGroups.SelectedItems[0].Tag; if (userFolderAcl.Permissions != iMAP_ACL_Flags) { userFolderAcl.Permissions = iMAP_ACL_Flags; } } }
private void m_pTab_Security_InheritAcl_CheckStateChanged(object sender, EventArgs e) { if (this.m_EvensLocked) { return; } this.m_EvensLocked = true; if (this.m_pTab_Security_InheritAcl.Checked) { string text = "Do you want to inherit all permissions from parent folder and loose current permissions from current folder ?"; if (MessageBox.Show(this, text, "Warning:", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) { this.mt_Tab_Security_UsersOrGroupsToolbar.Enabled = false; this.m_pTab_Security_UsersOrGroups.Enabled = false; this.m_pTab_Security_Permissions.Enabled = false; foreach (ListViewItem listViewItem in this.m_pTab_Security_UsersOrGroups.Items) { UserFolderAcl userFolderAcl = (UserFolderAcl)listViewItem.Tag; userFolderAcl.Owner.Remove(userFolderAcl); } this.LoadACL(); } else { this.m_pTab_Security_InheritAcl.Checked = false; this.mt_Tab_Security_UsersOrGroupsToolbar.Enabled = true; this.m_pTab_Security_UsersOrGroups.Enabled = true; this.m_pTab_Security_Permissions.Enabled = true; } } else { this.mt_Tab_Security_UsersOrGroupsToolbar.Enabled = true; this.m_pTab_Security_UsersOrGroups.Enabled = true; this.m_pTab_Security_Permissions.Enabled = true; this.m_pTab_Security_UsersOrGroups.Items.Clear(); this.m_pTab_Security_UsersOrGroups_SelectedIndexChanged(null, null); } this.m_EvensLocked = false; }
private void mt_Tab_Security_UsersOrGroupsToolbar_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.Tag.ToString() == "add") { List <string> list = new List <string>(); foreach (ListViewItem listViewItem in this.m_pTab_Security_UsersOrGroups.Items) { list.Add(listViewItem.Text.ToLower()); } SelectUserOrGroupForm selectUserOrGroupForm = new SelectUserOrGroupForm(this.m_pVirtualServer, false, false, list); if (selectUserOrGroupForm.ShowDialog(this) == DialogResult.OK) { ListViewItem listViewItem2 = new ListViewItem(selectUserOrGroupForm.SelectedUserOrGroup); listViewItem2.Tag = this.m_pFolder.ACL.Add(selectUserOrGroupForm.SelectedUserOrGroup, IMAP_ACL_Flags.None); if (selectUserOrGroupForm.IsGroup) { listViewItem2.ImageIndex = 1; } else { listViewItem2.ImageIndex = 0; } listViewItem2.Selected = true; this.m_pTab_Security_UsersOrGroups.Items.Add(listViewItem2); return; } } else if (e.ClickedItem.Tag.ToString() == "delete") { ListViewItem listViewItem3 = this.m_pTab_Security_UsersOrGroups.SelectedItems[0]; if (MessageBox.Show(this, "Are you sure you want to remove '" + listViewItem3.Text + "' permissions on current folder ?", "Confirm Delete:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { UserFolderAcl userFolderAcl = (UserFolderAcl)listViewItem3.Tag; userFolderAcl.Owner.Remove(userFolderAcl); listViewItem3.Remove(); } } }
private void mt_Tab_Security_UsersOrGroupsToolbar_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.Tag.ToString() == "add") { List <string> excludeList = new List <string>(); foreach (ListViewItem item in m_pTab_Security_UsersOrGroups.Items) { excludeList.Add(item.Text.ToLower()); } wfrm_se_UserOrGroup frm = new wfrm_se_UserOrGroup(m_pVirtualServer, false, false, excludeList); if (frm.ShowDialog(this) == DialogResult.OK) { ListViewItem item = new ListViewItem(frm.SelectedUserOrGroup); item.Tag = m_pFolder.ACL.Add(frm.SelectedUserOrGroup, LumiSoft.Net.IMAP.IMAP_ACL_Flags.None); if (frm.IsGroup) { item.ImageIndex = 1; } else { item.ImageIndex = 0; } item.Selected = true; m_pTab_Security_UsersOrGroups.Items.Add(item); } } else if (e.ClickedItem.Tag.ToString() == "delete") { ListViewItem item = m_pTab_Security_UsersOrGroups.SelectedItems[0]; if (MessageBox.Show(this, "Are you sure you want to remove '" + item.Text + "' permissions on current folder ?", "Confirm Delete:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { UserFolderAcl acl = (UserFolderAcl)item.Tag; acl.Owner.Remove(acl); item.Remove(); } } }
private void m_pTab_Security_UsersOrGroups_SelectedIndexChanged(object sender, EventArgs e) { m_EvensLocked = true; if (m_pTab_Security_UsersOrGroups.SelectedItems.Count > 0) { mt_Tab_Security_UsersOrGroupsToolbar.Items[1].Enabled = true; if (!m_pTab_Security_InheritAcl.Checked) { m_pTab_Security_Permissions.Enabled = true; } ListViewItem item = m_pTab_Security_UsersOrGroups.SelectedItems[0]; UserFolderAcl acl = (UserFolderAcl)item.Tag; if ((acl.Permissions & IMAP_ACL_Flags.l) != 0) { m_pTab_Security_Permissions.Items[1].Checked = true; } if ((acl.Permissions & IMAP_ACL_Flags.r) != 0) { m_pTab_Security_Permissions.Items[3].Checked = true; } if ((acl.Permissions & IMAP_ACL_Flags.s) != 0) { m_pTab_Security_Permissions.Items[6].Checked = true; } if ((acl.Permissions & IMAP_ACL_Flags.w) != 0) { m_pTab_Security_Permissions.Items[6].Checked = true; } if ((acl.Permissions & IMAP_ACL_Flags.i) != 0) { m_pTab_Security_Permissions.Items[4].Checked = true; } if ((acl.Permissions & IMAP_ACL_Flags.p) != 0) { m_pTab_Security_Permissions.Items[4].Checked = true; } if ((acl.Permissions & IMAP_ACL_Flags.c) != 0) { m_pTab_Security_Permissions.Items[2].Checked = true; } if ((acl.Permissions & IMAP_ACL_Flags.d) != 0) { m_pTab_Security_Permissions.Items[5].Checked = true; } if ((acl.Permissions & IMAP_ACL_Flags.a) != 0) { m_pTab_Security_Permissions.Items[0].Checked = true; } } else { mt_Tab_Security_UsersOrGroupsToolbar.Items[1].Enabled = false; m_pTab_Security_Permissions.Enabled = false; foreach (ListViewItem item in m_pTab_Security_Permissions.Items) { item.Checked = false; } } m_EvensLocked = false; }
private void wfrm_User_FolderProperties_FormClosing(object sender, FormClosingEventArgs e) { try{ // See if permissions has chanhed, if so update them, if (m_pTab_Security_UsersOrGroups.SelectedItems.Count > 0) { //--- Construct ACl flags ---------------// IMAP_ACL_Flags acl = IMAP_ACL_Flags.None; if (m_pTab_Security_Permissions.Items[0].Checked) { acl |= IMAP_ACL_Flags.a; } if (m_pTab_Security_Permissions.Items[1].Checked) { acl |= IMAP_ACL_Flags.l; } if (m_pTab_Security_Permissions.Items[2].Checked) { acl |= IMAP_ACL_Flags.c; } if (m_pTab_Security_Permissions.Items[3].Checked) { acl |= IMAP_ACL_Flags.r; } if (m_pTab_Security_Permissions.Items[4].Checked) { acl |= IMAP_ACL_Flags.i | IMAP_ACL_Flags.p; } if (m_pTab_Security_Permissions.Items[5].Checked) { acl |= IMAP_ACL_Flags.d; } if (m_pTab_Security_Permissions.Items[6].Checked) { acl |= IMAP_ACL_Flags.w | IMAP_ACL_Flags.s; } //--------------------------------------// UserFolderAcl aclEntry = (UserFolderAcl)m_pTab_Security_UsersOrGroups.SelectedItems[0].Tag; if (aclEntry.Permissions != acl) { aclEntry.Permissions = acl; aclEntry.Commit(); } } //--- See if sharing data changed ------------------------------------------------------------ // Sharing removed if (m_pTab_Sharing_DontShare.Checked && m_ShareName != "") { SharedRootFolder root = m_pVirtualServer.RootFolders.GetRootFolderByName(m_ShareName); root.Owner.Remove(root); } else if (m_pTab_Sharing_Share.Checked && m_ShareName != m_pTab_Sharing_ShareName.Text) { // Update shared root folder info if (m_pVirtualServer.RootFolders.Contains(m_ShareName)) { SharedRootFolder root = m_pVirtualServer.RootFolders.GetRootFolderByName(m_ShareName); root.Enabled = true; root.Name = m_pTab_Sharing_ShareName.Text; root.Commit(); } // Add new shared root folder else { m_pVirtualServer.RootFolders.Add( true, m_pTab_Sharing_ShareName.Text, "", SharedFolderRootType_enum.BoundedRootFolder, m_pFolder.User.UserName, m_pFolder.FolderFullPath ); } } //------------------------------------------------------------------------------------------- } catch (Exception x) { wfrm_sys_Error frm = new wfrm_sys_Error(x, new System.Diagnostics.StackTrace()); frm.ShowDialog(null); if (MessageBox.Show(this, "Do you want to reconfigure ?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { e.Cancel = true; } } }
private void LoadACL() { this.m_EvensLocked = true; this.m_pTab_Security_UsersOrGroups.Items.Clear(); bool flag = false; if (this.m_pFolder.ACL.Count > 0) { foreach (UserFolderAcl userFolderAcl in this.m_pFolder.ACL) { ListViewItem listViewItem = new ListViewItem(userFolderAcl.UserOrGroup); listViewItem.SubItems.Add(IMAP_Utils.ACL_to_String(userFolderAcl.Permissions)); if (!this.m_pVirtualServer.Groups.Contains(userFolderAcl.UserOrGroup)) { listViewItem.ImageIndex = 0; } else { listViewItem.ImageIndex = 1; } listViewItem.Tag = userFolderAcl; this.m_pTab_Security_UsersOrGroups.Items.Add(listViewItem); } flag = true; } else { UserFolder userFolder = this.m_pFolder; while (userFolder.Parent != null) { userFolder = userFolder.Parent; if (userFolder.ACL.Count > 0) { IEnumerator enumerator2 = userFolder.ACL.GetEnumerator(); try { while (enumerator2.MoveNext()) { UserFolderAcl userFolderAcl2 = (UserFolderAcl)enumerator2.Current; ListViewItem listViewItem2 = new ListViewItem(userFolderAcl2.UserOrGroup); listViewItem2.SubItems.Add(IMAP_Utils.ACL_to_String(userFolderAcl2.Permissions)); if (!this.m_pVirtualServer.Groups.Contains(userFolderAcl2.UserOrGroup)) { listViewItem2.ImageIndex = 0; } else { listViewItem2.ImageIndex = 1; } listViewItem2.Tag = userFolderAcl2; this.m_pTab_Security_UsersOrGroups.Items.Add(listViewItem2); } break; } finally { IDisposable disposable2 = enumerator2 as IDisposable; if (disposable2 != null) { disposable2.Dispose(); } } } } } if (!flag) { this.m_pTab_Security_InheritAcl.Checked = true; this.mt_Tab_Security_UsersOrGroupsToolbar.Enabled = false; this.m_pTab_Security_Permissions.Enabled = false; } else { this.m_pTab_Security_InheritAcl.Checked = false; this.mt_Tab_Security_UsersOrGroupsToolbar.Enabled = true; this.m_pTab_Security_Permissions.Enabled = true; this.m_pTab_Security_UsersOrGroups_SelectedIndexChanged(null, null); } this.m_EvensLocked = false; }
private void wfrm_User_FolderProperties_FormClosing(object sender, FormClosingEventArgs e) { try { if (this.m_pTab_Security_UsersOrGroups.SelectedItems.Count > 0) { IMAP_ACL_Flags iMAP_ACL_Flags = IMAP_ACL_Flags.None; if (this.m_pTab_Security_Permissions.Items[0].Checked) { iMAP_ACL_Flags |= IMAP_ACL_Flags.a; } if (this.m_pTab_Security_Permissions.Items[1].Checked) { iMAP_ACL_Flags |= IMAP_ACL_Flags.l; } if (this.m_pTab_Security_Permissions.Items[2].Checked) { iMAP_ACL_Flags |= IMAP_ACL_Flags.c; } if (this.m_pTab_Security_Permissions.Items[3].Checked) { iMAP_ACL_Flags |= IMAP_ACL_Flags.r; } if (this.m_pTab_Security_Permissions.Items[4].Checked) { iMAP_ACL_Flags |= (IMAP_ACL_Flags)48; } if (this.m_pTab_Security_Permissions.Items[5].Checked) { iMAP_ACL_Flags |= IMAP_ACL_Flags.d; } if (this.m_pTab_Security_Permissions.Items[6].Checked) { iMAP_ACL_Flags |= (IMAP_ACL_Flags)12; } UserFolderAcl userFolderAcl = (UserFolderAcl)this.m_pTab_Security_UsersOrGroups.SelectedItems[0].Tag; if (userFolderAcl.Permissions != iMAP_ACL_Flags) { userFolderAcl.Permissions = iMAP_ACL_Flags; userFolderAcl.Commit(); } } if (this.m_pTab_Sharing_DontShare.Checked && this.m_ShareName != "") { SharedRootFolder rootFolderByName = this.m_pVirtualServer.RootFolders.GetRootFolderByName(this.m_ShareName); rootFolderByName.Owner.Remove(rootFolderByName); } else if (this.m_pTab_Sharing_Share.Checked && this.m_ShareName != this.m_pTab_Sharing_ShareName.Text) { if (this.m_pVirtualServer.RootFolders.Contains(this.m_ShareName)) { SharedRootFolder rootFolderByName2 = this.m_pVirtualServer.RootFolders.GetRootFolderByName(this.m_ShareName); rootFolderByName2.Enabled = true; rootFolderByName2.Name = this.m_pTab_Sharing_ShareName.Text; rootFolderByName2.Commit(); } else { this.m_pVirtualServer.RootFolders.Add(true, this.m_pTab_Sharing_ShareName.Text, "", SharedFolderRootType.BoundedRootFolder, this.m_pFolder.User.UserName, this.m_pFolder.FolderFullPath); } } } catch (Exception x) { ErrorForm errorForm = new ErrorForm(x, new StackTrace()); errorForm.ShowDialog(null); if (MessageBox.Show(this, "Do you want to reconfigure ?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { e.Cancel = true; } } }