public void TestRenameRootPublicFolder() { hMailServer.IMAPFolders folders = _application.Settings.PublicFolders; hMailServer.IMAPFolder folder = folders.Add("ShareA"); folder.Save(); hMailServer.IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeAnyone; permission.set_Permission(hMailServer.eACLPermission.ePermissionLookup, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionRead, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionDeleteMailbox, true); permission.Save(); hMailServer.IMAPFolder folder2 = folders.Add("ShareB"); folder2.Save(); hMailServer.IMAPFolderPermission permission2 = folder2.Permissions.Add(); permission2.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeAnyone; permission2.set_Permission(hMailServer.eACLPermission.ePermissionLookup, true); permission2.set_Permission(hMailServer.eACLPermission.ePermissionRead, true); permission2.set_Permission(hMailServer.eACLPermission.ePermissionDeleteMailbox, true); permission2.Save(); hMailServer.Account account = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); IMAPSimulator simulator1 = new IMAPSimulator(); simulator1.ConnectAndLogon(account.Address, "test"); Assert.IsTrue(simulator1.SelectFolder("#Public.ShareA")); Assert.IsTrue(simulator1.SelectFolder("#Public.ShareB")); Assert.IsTrue(simulator1.RenameFolder("#Public.ShareA", "#Public.ShareB.ShareA")); Assert.IsFalse(simulator1.SelectFolder("#Public.ShareA")); Assert.IsTrue(simulator1.SelectFolder("#Public.ShareB")); Assert.IsTrue(simulator1.SelectFolder("#Public.ShareB.ShareA")); }
private string GetPermissionName(hMailServer.IMAPFolderPermission permission) { string name = ""; switch (permission.PermissionType) { case eACLPermissionType.ePermissionTypeUser: { hMailServer.Account account = permission.Account; name = account.Address; break; } case eACLPermissionType.ePermissionTypeGroup: { hMailServer.Group group = permission.Group; name = group.Name; break; } case eACLPermissionType.ePermissionTypeAnyone: { name = EnumStrings.GetPermissionTypeString(permission.PermissionType); break; } } return(name); }
public void TestIMAPFolderPermissionAccessGroup() { hMailServer.Application application = SingletonProvider <Utilities> .Instance.GetApp(); ; hMailServer.Account account1 = SingletonProvider <Utilities> .Instance.AddAccount(_domain, "*****@*****.**", "test"); hMailServer.Group group = SingletonProvider <Utilities> .Instance.AddGroup("TestGroup"); hMailServer.IMAPFolders publicFolders = _settings.PublicFolders; hMailServer.IMAPFolder folder = publicFolders.Add("Share1"); folder.Save(); hMailServer.IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionGroupID = group.ID; permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeGroup; permission.Save(); Assert.AreEqual(permission.Group.Name, group.Name); permission = folder.Permissions.Add(); permission.PermissionAccountID = account1.ID; permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeUser; permission.Save(); Assert.AreEqual(permission.Account.Address, account1.Address); }
private void buttonDeleteWhiteList_Click(object sender, EventArgs e) { foreach (ListViewItem item in listACL.SelectedItems) { hMailServer.IMAPFolderPermission permission = item.Tag as hMailServer.IMAPFolderPermission; permission.Delete(); } ListPermissions(); EnableDisable(); }
private void ListPermissions() { listACL.Items.Clear(); hMailServer.IMAPFolderPermissions permissions = _folder.Permissions; for (int i = 0; i < permissions.Count; i++) { hMailServer.IMAPFolderPermission permission = permissions[i]; ListPermission(permission); } Marshal.ReleaseComObject(permissions); }
private ListViewItem ListPermission(hMailServer.IMAPFolderPermission permission) { string name = "<Deleted>"; try { name = GetPermissionName(permission); } catch (Exception) { } ListViewItem item = listACL.Items.Add(EnumStrings.GetPermissionTypeString(permission.PermissionType)); item.SubItems.Add(name); item.Tag = permission; return(item); }
private void ConfirmPublicFolders() { if (_backupMessages) { hMailServer.Domain domain = _application.Domains[0]; hMailServer.IMAPFolders publicFolders = _application.Settings.PublicFolders; Assert.IsNotNull(publicFolders.get_ItemByName("Test1")); Assert.IsNotNull(publicFolders.get_ItemByName("Test2")); Assert.IsNotNull(publicFolders.get_ItemByName("Test3")); Assert.IsNotNull(publicFolders.get_ItemByName("ACL")); hMailServer.IMAPFolderPermissions permissions = publicFolders.get_ItemByName("ACL").Permissions; Assert.AreEqual(1, permissions.Count); hMailServer.Account account1 = domain.Accounts.get_ItemByAddress("*****@*****.**"); hMailServer.IMAPFolderPermission permission = permissions[0]; Assert.AreEqual(hMailServer.eACLPermissionType.ePermissionTypeUser, permission.PermissionType); Assert.AreEqual(account1.ID, permission.PermissionAccountID); Assert.IsTrue(permission.get_Permission(hMailServer.eACLPermission.ePermissionAdminister)); Assert.IsTrue(permission.get_Permission(hMailServer.eACLPermission.ePermissionInsert)); Assert.IsFalse(permission.get_Permission(hMailServer.eACLPermission.ePermissionRead)); Assert.IsFalse(permission.get_Permission(hMailServer.eACLPermission.ePermissionWriteSeen)); hMailServer.Group group1 = _application.Settings.Groups.get_ItemByName("ACLTestGroup"); permissions = publicFolders.get_ItemByName("ACL").SubFolders.get_ItemByName("MySubFolder").Permissions; permission = permissions[0]; Assert.AreEqual(hMailServer.eACLPermissionType.ePermissionTypeGroup, permission.PermissionType); Assert.AreEqual(group1.ID, permission.PermissionGroupID); Assert.IsTrue(permission.get_Permission(hMailServer.eACLPermission.ePermissionLookup)); Assert.IsTrue(permission.get_Permission(hMailServer.eACLPermission.ePermissionDeleteMailbox)); Assert.IsFalse(permission.get_Permission(hMailServer.eACLPermission.ePermissionRead)); Assert.IsFalse(permission.get_Permission(hMailServer.eACLPermission.ePermissionWriteSeen)); } }
public void ConfirmFileAddedToCorrectPublicFolder() { Utilities utilities = SingletonProvider <Utilities> .Instance; hMailServer.Account oAccount = utilities.AddAccount(_domain, "*****@*****.**", "test"); IMAPSimulator oSimulator = new IMAPSimulator(); // Confirm that the public folder is empty before we start our test. string publicDir = utilities.GetPublicDirectory(); utilities.AssertFilesInDirectory(publicDir, 0); hMailServer.IMAPFolders folders = _application.Settings.PublicFolders; hMailServer.IMAPFolder folder = folders.Add("Share"); folder.Save(); // Give everyone access to the folder. hMailServer.IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeAnyone; permission.set_Permission(hMailServer.eACLPermission.ePermissionLookup, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionRead, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionInsert, true); permission.Save(); // Add the message to the public folder. oSimulator.Connect(); oSimulator.LogonWithLiteral("*****@*****.**", "test"); oSimulator.SendSingleCommandWithLiteral("A01 APPEND #Public.Share {4}", "ABCD"); // Confirm that the message exists in the public folder and not in the inbox. Assert.AreEqual(1, oSimulator.GetMessageCount("#Public.Share")); Assert.AreEqual(0, oSimulator.GetMessageCount("INBOX")); oSimulator.Disconnect(); // The public directory should now contain the message. utilities.AssertFilesInDirectory(publicDir, 1); // There users directory should still be empty. utilities.AssertFilesInUserDirectory(oAccount, 0); }
private void SetupPublicFolders() { hMailServer.IMAPFolders folders = _application.Settings.PublicFolders; hMailServer.IMAPFolder folder = folders.Add("Test1"); folder.Save(); folder = folders.Add("Test2"); folder.Save(); folder = folders.Add("Test3"); folder.Save(); folder = folders.Add("ACL"); folder.Save(); hMailServer.Domain domain = _application.Domains[0]; hMailServer.Account account1 = SingletonProvider <Utilities> .Instance.AddAccount(domain, "*****@*****.**", "test"); hMailServer.IMAPFolderPermission permission = folder.Permissions.Add(); permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeUser; permission.PermissionAccountID = account1.ID; permission.set_Permission(hMailServer.eACLPermission.ePermissionAdminister, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionInsert, true); permission.Save(); folder = folder.SubFolders.Add("MySubFolder"); folder.Save(); hMailServer.Group group1 = _application.Settings.Groups.Add(); group1.Name = "ACLTestGroup"; group1.Save(); permission = folder.Permissions.Add(); permission.PermissionType = hMailServer.eACLPermissionType.ePermissionTypeGroup; permission.PermissionGroupID = group1.ID; permission.set_Permission(hMailServer.eACLPermission.ePermissionLookup, true); permission.set_Permission(hMailServer.eACLPermission.ePermissionDeleteMailbox, true); permission.Save(); }
private void SaveRightsForPermission() { if (listACL.SelectedItems.Count == 0) { return; } hMailServer.IMAPFolderPermission permission = listACL.SelectedItems[0].Tag as hMailServer.IMAPFolderPermission; permission.set_Permission(eACLPermission.ePermissionAdminister, checkPermissionAdminister.Checked); permission.set_Permission(eACLPermission.ePermissionCreate, checkPermissionCreateMailbox.Checked); permission.set_Permission(eACLPermission.ePermissionDeleteMailbox, checkPermissionDeleteMailbox.Checked); permission.set_Permission(eACLPermission.ePermissionExpunge, checkPermissionExpunge.Checked); permission.set_Permission(eACLPermission.ePermissionInsert, checkPermissionInsert.Checked); permission.set_Permission(eACLPermission.ePermissionLookup, checkPermissionLookup.Checked); permission.set_Permission(eACLPermission.ePermissionRead, checkPermissionRead.Checked); permission.set_Permission(eACLPermission.ePermissionWriteDeleted, checkPermissionKeepDeletedFlag.Checked); permission.set_Permission(eACLPermission.ePermissionWriteOthers, checkPermissionKeepOtherFlags.Checked); permission.set_Permission(eACLPermission.ePermissionWriteSeen, checkPermissionKeepSeenFlag.Checked); permission.set_Permission(eACLPermission.ePermissionAdminister, checkPermissionAdminister.Checked); permission.Save(); }