예제 #1
0
        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"));
        }
예제 #2
0
        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);
        }
예제 #3
0
파일: API.cs 프로젝트: radtek/hMailServer
        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);
        }
예제 #4
0
        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();
        }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }
예제 #7
0
        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));
            }
        }
예제 #8
0
        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);
        }
예제 #9
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();
        }
예제 #10
0
        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();
        }