Beispiel #1
0
        public ServerMailboxData CreateMyCommonDomainMailbox(string name)
        {
            if (!SetupInfo.IsVisibleSettings("AdministrationPage") || !SetupInfo.IsVisibleSettings("MailCommonDomain") ||
                CoreContext.Configuration.Standalone)
            {
                throw new Exception("Common domain is not available");
            }

            var serverDomainEngine = new ServerDomainEngine(Tenant, User);

            var domain = serverDomainEngine.GetCommonDomain();

            if (domain == null)
            {
                throw new SecurityException("Domain not found.");
            }

            var userInfo = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID);

            return(CreateMailbox(userInfo.DisplayUserName(), name, domain.Id, userInfo.ID.ToString()));
        }
Beispiel #2
0
        public ServerFullData GetMailServerFullInfo()
        {
            if (!IsAdmin)
            {
                throw new SecurityException("Need admin privileges.");
            }

            var fullServerInfo    = new ServerFullData();
            var mailboxDataList   = new List <ServerMailboxData>();
            var mailgroupDataList = new List <ServerDomainGroupData>();

            var domainEngine = new ServerDomainEngine(Tenant, User);

            using (var daoFactory = new DaoFactory())
            {
                var server = GetMailServer(daoFactory);

                var domains = domainEngine.GetDomains(daoFactory);

                var mailboxDao = daoFactory.CreateMailboxDao();

                var mailboxes = mailboxDao.GetMailBoxes(new TenantServerMailboxesExp(Tenant));

                var serverAddressDao = daoFactory.CreateServerAddressDao(Tenant);

                var addresses = serverAddressDao.GetList();

                foreach (var mailbox in mailboxes)
                {
                    var address =
                        addresses.FirstOrDefault(
                            a => a.MailboxId == mailbox.Id && a.IsAlias == false && a.IsMailGroup == false);

                    if (address == null)
                    {
                        continue;
                    }

                    var domain = domains.FirstOrDefault(d => d.Id == address.DomainId);

                    if (domain == null)
                    {
                        continue;
                    }

                    var serverAddressData = ServerMailboxEngine.ToServerDomainAddressData(address, domain);

                    var aliases =
                        addresses.Where(a => a.MailboxId == mailbox.Id && a.IsAlias && !a.IsMailGroup)
                        .ToList()
                        .ConvertAll(a => ServerMailboxEngine.ToServerDomainAddressData(a, domain));

                    mailboxDataList.Add(ServerMailboxEngine.ToMailboxData(mailbox, serverAddressData, aliases));
                }

                var serverGroupDao = daoFactory.CreateServerGroupDao(Tenant);

                var groups = serverGroupDao.GetList();

                foreach (var serverGroup in groups)
                {
                    var address =
                        addresses.FirstOrDefault(
                            a => a.Id == serverGroup.AddressId && !a.IsAlias && a.IsMailGroup);

                    if (address == null)
                    {
                        continue;
                    }

                    var domain = domains.FirstOrDefault(d => d.Id == address.DomainId);

                    if (domain == null)
                    {
                        continue;
                    }

                    var email = string.Format("{0}@{1}", address.AddressName, domain.Name);

                    var serverGroupAddress = ServerMailboxEngine.ToServerDomainAddressData(address, email);

                    var serverGroupAddresses =
                        serverAddressDao.GetGroupAddresses(serverGroup.Id)
                        .ConvertAll(a => ServerMailboxEngine.ToServerDomainAddressData(a,
                                                                                       string.Format("{0}@{1}", a.AddressName, domain.Name)));

                    mailgroupDataList.Add(ServerMailgroupEngine.ToServerDomainGroupData(serverGroup.Id, serverGroupAddress, serverGroupAddresses));
                }

                fullServerInfo.Server     = server;
                fullServerInfo.Domains    = domains;
                fullServerInfo.Mailboxes  = mailboxDataList;
                fullServerInfo.Mailgroups = mailgroupDataList;
            }

            return(fullServerInfo);
        }