public void SetUp()
 {
     server = TestContext.CreateServer();
     peter_domain = server.CreateWebDomain(_peterDomainName, IS_VERIFIED, TestContext.ServerFactory);
     peter_address = TestContext.CreateRandomMailAddress(peter_domain);
     peter_account = TestContext.GetMailAccount(peter_address.LocalPart, _peterDomainName);
 }
 public void Init()
 {
     server = TestContext.CreateServer();
     peter_domain = server.CreateWebDomain(_peterDomainName, IS_VERIFIED, TestContext.ServerFactory);
     peter_mail_group_address = TestContext.CreateRandomMailAddress(peter_domain);
     var peterMailboxAddress = TestContext.CreateRandomMailAddress(peter_domain);
     var peterAccount = TestContext.GetMailAccount(peterMailboxAddress.LocalPart, _peterDomainName);
     peter_mailbox = server.CreateMailbox(peterMailboxAddress.LocalPart, PETER_PASSWORD, peterMailboxAddress.Domain, peterAccount,
                                          TestContext.ServerFactory);
     peter_mail_group = server.CreateMailGroup(peter_mail_group_address.LocalPart, peter_mail_group_address.Domain, new List<int> { peter_mailbox.Address.Id }, TestContext.ServerFactory);
 }
 public void Init()
 {
     server = TestContext.CreateServer();
     peter_domain = server.CreateWebDomain(_peterDomainName, IS_VERIFIED, TestContext.ServerFactory);
     peter_address = TestContext.CreateRandomMailAddress(peter_domain);
     peter_second_address = TestContext.CreateRandomMailAddress(peter_domain);
     peter_alias = TestContext.CreateRandomMailAddress(peter_domain);
     peter_account = TestContext.GetMailAccount(peter_address.LocalPart, _peterDomainName);
     peter_second_account = TestContext.GetMailAccount(peter_second_address.LocalPart, _peterDomainName);
     peter_mailbox = server.CreateMailbox(peter_address.LocalPart, PETER_PASSWORD, peter_domain, peter_account, TestContext.ServerFactory);
     peter_second_mailbox = server.CreateMailbox(peter_second_address.LocalPart, PETER_PASSWORD, peter_domain, peter_second_account, TestContext.ServerFactory);
 }
        public void Clean()
        {
            if (peter_mailbox != null)
            {
                server.DeleteMailbox(peter_mailbox);
                peter_mailbox = null;
            }

            if (peter_domain != null)
            {
                server.DeleteWebDomain(peter_domain, TestContext.ServerFactory);
                peter_domain = null;
            }
        }
        public MailAddressModel(int id, int tenant, string localpart, IWebDomain domain)
            : base(localpart, new WebDomainBase(domain))
        {
            if (id < 0)
                throw new ArgumentException("Invalid domain id", "id");

            if (tenant < 0)
                throw new ArgumentException("Invalid tenant id", "tenant");

            if (domain == null)
                throw new ArgumentException("Invalid domain", "domain");

            Id = id;
            Tenant = tenant;
            Domain = domain;
        }
 public WebDomainBase(IWebDomain webDomain)
     : this(webDomain.Name)
 {
 }
 public abstract IMailGroup CreateMailGroup(string group_name, IWebDomain domain, List <int> address_ids, IMailServerFactory factory);
Example #8
0
 public void Init()
 {
     _server       = TestContext.CreateServer();
     _petersDomain = _server.CreateWebDomain(_peterDomainName, IS_VERIFIED, TestContext.ServerFactory);
     _peterAddress = TestContext.CreateRandomMailAddress(_petersDomain);
 }
Example #9
0
        public override IMailbox CreateMailbox(string localpart, string password, IWebDomain domain, IMailAccount account, IMailServerFactory factory)
        {
            if (string.IsNullOrEmpty(localpart))
                throw new ArgumentNullException("localpart");

            if(domain == null)
                throw new ArgumentNullException("domain");

            if (account == null)
                throw new ArgumentNullException("account");

            if (localpart.Length + domain.Name.Length > 318) // 318 because of @ sign
                throw new ArgumentException("Address of mailbox exceed limitation of 319 characters.", "localpart");

            var mailboxBase = new MailboxBase(new MailAccountBase(account.Login),
                                   new MailAddressBase(localpart, new WebDomainBase(domain)),
                                   new List<MailAddressBase>())
                {
                    DateCreated = DateTime.UtcNow
                };

            MailboxWithAddressDto mailboxWithAddressDto;

            using (var dbContextWithTran = TeamlabMailboxDal.CreateMailDbContext(true))
            {
                mailboxWithAddressDto = TeamlabMailboxDal.CreateMailbox(account.TeamlabAccount,
                                                                           mailboxBase.Address.ToString(), password,
                                                                           mailboxBase.Address.LocalPart,
                                                                           mailboxBase.Address.DateCreated,
                                                                           domain.Id, domain.Name, domain.IsVerified, dbContextWithTran.DbManager);
                _CreateMailbox(account.Login, password, localpart, domain.Name);

                dbContextWithTran.CommitTransaction();
            }

            var mailboxAddress = factory.CreateMailAddress(mailboxWithAddressDto.mailbox_address.id, mailboxWithAddressDto.mailbox_address.tenant, mailboxWithAddressDto.mailbox_address.name, domain) ;

            var mailbox = factory.CreateMailbox(mailboxWithAddressDto.mailbox.id, mailboxWithAddressDto.mailbox.tenant,
                mailboxAddress, account, new List<IMailAddress>(), this);

            return mailbox;

        }
 public void Init()
 {
     server = TestContext.CreateServer();
     peter_domain = server.CreateWebDomain(_peterDomainName, IS_VERIFIED, TestContext.ServerFactory);
 }
Example #11
0
 public MockAddress(int id, int tenant, string name, IWebDomain domain) : base(id, tenant, name, domain)
 {
 }
Example #12
0
 public abstract INotificationAddress CreateNotificationAddress(string localpart, string password, IWebDomain domain, IMailServerFactory factory);
 public abstract INotificationAddress CreateNotificationAddress(string localPart, IWebDomain domain,
                                                                string smtpServer, int smtpPort,
                                                                string smtpAccount, bool smtpAuth,
                                                                EncryptionType smptEncryptionType,
                                                                AuthenticationType smtpAuthenticationType);
Example #14
0
 public WebDomainBase(IWebDomain webDomain)
     : this(webDomain.Name)
 {
     
 }
 public void Init()
 {
     _server = TestContext.CreateServer();
     _petersDomain = _server.CreateWebDomain(_peterDomainName, IS_VERIFIED, TestContext.ServerFactory);
     _peterAddress = TestContext.CreateRandomMailAddress(_petersDomain);
 }
 public void CompareMailboxesWithDifferentDomainsWorks()
 {
     _paulsDomain = _server.CreateWebDomain(_paulsDomainName, IS_VERIFIED, TestContext.ServerFactory);
     _paulAddress = TestContext.CreateRandomMailAddress(_paulsDomain);
     Assert.IsFalse(_peterAddress.Equals(_paulAddress));
 }
Example #17
0
 public IMailAddress CreateRandomMailAddress(IWebDomain domain)
 {
     var address = ServerFactory.CreateMailAddress(1, 0, CreateNewPeterName(), domain);
     return address;
 }
 public void Dispose()
 {
     if (peter_domain == null) return;
     server.DeleteWebDomain(peter_domain, TestContext.ServerFactory);
     peter_domain = null;
 }
Example #19
0
 public override IMailAddress CreateMailAddress(int id, int tenant, string name, IWebDomain domain)
 {
     return new PostfixAddress(id, tenant, name, domain);
 }
Example #20
0
        public IMailAddress CreateRandomMailAddress(IWebDomain domain)
        {
            var address = ServerFactory.CreateMailAddress(1, 0, CreateNewPeterName(), domain);

            return(address);
        }
Example #21
0
 public override IMailAddress CreateMailAddress(int id, int tenant, string name, IWebDomain domain)
 {
     return(new MockAddress(id, tenant, name, domain));
 }
Example #22
0
 public void Init()
 {
     server       = TestContext.CreateServer();
     peter_domain = server.CreateWebDomain(_peterDomainName, IS_VERIFIED, TestContext.ServerFactory);
 }
Example #23
0
        public override IMailGroup CreateMailGroup(string groupName, IWebDomain domain, List <int> addressIds, IMailServerFactory factory)
        {
            if (string.IsNullOrEmpty(groupName))
            {
                throw new ArgumentNullException("groupName", "ServerModel::CreateMailGroup");
            }

            if (domain == null)
            {
                throw new ArgumentNullException("domain");
            }

            if (addressIds == null)
            {
                throw new ArgumentNullException("addressIds");
            }

            if (!addressIds.Any())
            {
                throw new ArgumentException("Empty address_ids list");
            }

            if (factory == null)
            {
                throw new ArgumentNullException("factory");
            }

            MailGroupDto mailgroupDto;

            using (var dbContextWithTran = TeamlabMailGroupDal.CreateMailDbContext(true))
            {
                var addressDtoList = TeamlabMailAddressDal.GetMailAddresses(addressIds, dbContextWithTran.DbManager);

                var addressBaseList =
                    addressDtoList
                    .Select(dto =>
                            new MailAddressBase(dto.name,
                                                new WebDomainBase(dto.domain.name)))
                    .ToList();

                var mailgroupBase = new MailGroupBase(new MailAddressBase(groupName, new WebDomainBase(domain)),
                                                      addressBaseList)
                {
                    Address = { DateCreated = DateTime.UtcNow }
                };

                mailgroupDto = TeamlabMailGroupDal.SaveMailGroup(mailgroupBase.Address.LocalPart,
                                                                 mailgroupBase.Address.DateCreated,
                                                                 domain.Id,
                                                                 domain.Name,
                                                                 domain.IsVerified,
                                                                 addressDtoList, dbContextWithTran.DbManager);
                _CreateMailGroup(mailgroupBase.Address, addressBaseList);

                dbContextWithTran.CommitTransaction();
            }

            var mailgroupAddress = factory.CreateMailAddress(mailgroupDto.address.id, mailgroupDto.address.tenant, mailgroupDto.address.name, domain);

            var inAddresses =
                mailgroupDto.addresses.Select(
                    addressDto => factory.CreateMailAddress(addressDto.id, addressDto.tenant, addressDto.name, domain))
                .ToList();

            var mailgroup = factory.CreateMailGroup(mailgroupDto.id, mailgroupDto.id_tenant,
                                                    mailgroupAddress, inAddresses.ToList(), this);

            return(mailgroup);
        }
Example #24
0
 public override INotificationAddress CreateNotificationAddress(string localPart, IWebDomain domain, string smtpServer, int smtpPort,
                                                                string smtpAccount, bool smtpAuth, EncryptionType smptEncryptionType,
                                                                AuthenticationType smtpAuthenticationType)
 {
     return(new PostfixNotificationAddress(localPart, domain, smtpServer, smtpPort,
                                           smtpAccount, smtpAuth, smptEncryptionType,
                                           smtpAuthenticationType));
 }
Example #25
0
 public void CompareMailboxesWithDifferentDomainsWorks()
 {
     _paulsDomain = _server.CreateWebDomain(_paulsDomainName, IS_VERIFIED, TestContext.ServerFactory);
     _paulAddress = TestContext.CreateRandomMailAddress(_paulsDomain);
     Assert.IsFalse(_peterAddress.Equals(_paulAddress));
 }
Example #26
0
        public override void DeleteWebDomain(IWebDomain webDomain, IMailServerFactory factory)
        {
            if (webDomain == null)
                throw new ArgumentNullException("webDomain", "ServerModel::DeleteWebDomain");

            if (factory == null)
                throw new ArgumentNullException("factory", "ServerModel::DeleteWebDomain");

            using (var dbContextWithTran = TeamlabDomainDal.CreateMailDbContext(true))
            {
                TeamlabDomainDal.DeleteDomain(webDomain.Id, dbContextWithTran.DbManager);
                _DeleteWebDomain(new WebDomainBase(webDomain));
                TeamlabDnsDal.RemoveUsedDns(webDomain.Id, dbContextWithTran.DbManager);
                dbContextWithTran.CommitTransaction();
            }
        }
 public MockAddress(int id, int tenant, string name, IWebDomain domain) : base(id, tenant, name, domain)
 {
 }
Example #28
0
        public override IMailGroup CreateMailGroup(string groupName, IWebDomain domain, List<int> addressIds, IMailServerFactory factory)
        {
            if (string.IsNullOrEmpty(groupName))
                throw new ArgumentNullException("groupName", "ServerModel::CreateMailGroup");

            if (domain == null)
                throw new ArgumentNullException("domain");

            if (addressIds == null)
                throw new ArgumentNullException("addressIds");

            if(!addressIds.Any())
                throw new ArgumentException("Empty address_ids list");

            if (factory == null)
                throw new ArgumentNullException("factory");

            MailGroupDto mailgroupDto;

            using (var dbContextWithTran = TeamlabMailGroupDal.CreateMailDbContext(true))
            {
                var addressDtoList = TeamlabMailAddressDal.GetMailAddresses(addressIds, dbContextWithTran.DbManager);

                var addressBaseList =
                    addressDtoList
                        .Select(dto =>
                                new MailAddressBase(dto.name,
                                                    new WebDomainBase(dto.domain.name)))
                        .ToList();

                var mailgroupBase = new MailGroupBase(new MailAddressBase(groupName, new WebDomainBase(domain)),
                                                       addressBaseList);
                mailgroupDto = TeamlabMailGroupDal.SaveMailGroup(mailgroupBase.Address.LocalPart,
                                                                  mailgroupBase.Address.DateCreated,
                                                                  domain.Id,
                                                                  domain.Name,
                                                                  domain.IsVerified,
                                                                  addressDtoList, dbContextWithTran.DbManager);
                _CreateMailGroup(mailgroupBase.Address, addressBaseList);

                dbContextWithTran.CommitTransaction();
            }

            var mailgroupAddress = factory.CreateMailAddress(mailgroupDto.address.id, mailgroupDto.address.tenant, mailgroupDto.address.name, domain);

            var inAddresses =
                mailgroupDto.addresses.Select(
                    addressDto => factory.CreateMailAddress(addressDto.id, addressDto.tenant, addressDto.name, domain))
                               .ToList();

            var mailgroup = factory.CreateMailGroup(mailgroupDto.id, mailgroupDto.id_tenant, 
                mailgroupAddress, inAddresses.ToList(), this);

            return mailgroup;
        }
 public void Init()
 {
     server       = TestContext.CreateServer();
     peter_domain = server.CreateWebDomain(_peterDomainName, _isVerified, TestContext.ServerFactory);
 }
Example #30
0
        public override IMailbox CreateMailbox(string name, string localpart, string password, IWebDomain domain, IMailAccount account, IMailServerFactory factory)
        {
            if (string.IsNullOrEmpty(localpart))
            {
                throw new ArgumentNullException("localpart");
            }

            if (domain == null)
            {
                throw new ArgumentNullException("domain");
            }

            if (account == null)
            {
                throw new ArgumentNullException("account");
            }

            if (localpart.Length + domain.Name.Length > 318) // 318 because of @ sign
            {
                throw new ArgumentException("Address of mailbox exceed limitation of 319 characters.", "localpart");
            }

            var mailboxBase = new MailboxBase(new MailAccountBase(account.Login),
                                              new MailAddressBase(localpart, new WebDomainBase(domain)),
                                              name,
                                              new List <MailAddressBase>())
            {
                Address = { DateCreated = DateTime.UtcNow }
            };

            MailboxWithAddressDto mailboxWithAddressDto;

            using (var dbContextWithTran = TeamlabMailboxDal.CreateMailDbContext(true))
            {
                mailboxWithAddressDto = TeamlabMailboxDal.CreateMailbox(account.TeamlabAccount, mailboxBase.Name,
                                                                        mailboxBase.Address.ToString(), password,
                                                                        mailboxBase.Address.LocalPart,
                                                                        mailboxBase.Address.DateCreated,
                                                                        domain.Id, domain.Name, domain.IsVerified, dbContextWithTran.DbManager);
                _CreateMailbox(account.Login, password, localpart, domain.Name, name);

                dbContextWithTran.CommitTransaction();
            }

            var mailboxAddress = factory.CreateMailAddress(mailboxWithAddressDto.mailbox_address.id, mailboxWithAddressDto.mailbox_address.tenant, mailboxWithAddressDto.mailbox_address.name, domain);

            var mailbox = factory.CreateMailbox(mailboxWithAddressDto.mailbox.id, mailboxWithAddressDto.mailbox.tenant,
                                                mailboxAddress, mailboxWithAddressDto.mailbox.name, account, new List <IMailAddress>(), this);

            return(mailbox);
        }
 public abstract IMailAddress CreateMailAddress(int id, int tenant, string name, IWebDomain domain);
Example #32
0
        public override INotificationAddress CreateNotificationAddress(string localpart, string password, IWebDomain domain,
                                                                       IMailServerFactory factory)
        {
            if (string.IsNullOrEmpty(localpart))
            {
                throw new ArgumentNullException("localpart");
            }

            if (string.IsNullOrEmpty(password))
            {
                throw new ArgumentNullException("password");
            }

            if (domain == null)
            {
                throw new ArgumentNullException("domain");
            }

            if (localpart.Length + domain.Name.Length > 318) // 318 because of @ sign
            {
                throw new ArgumentException("Address of mailbox exceed limitation of 319 characters.", "localpart");
            }

            var notificationAddressBase = new MailAddressBase(localpart, new WebDomainBase(domain));

            var address = notificationAddressBase.ToString();

            var smtpSettings = TeamlabServerDal.GetTenantServerSettings().FirstOrDefault(s => s.type == ServerType.Smtp);

            if (smtpSettings == null)
            {
                throw new Exception("No smtp settings.");
            }

            var smtpLogin = smtpSettings.smtpLoginFormat.Replace("%EMAILADDRESS%", address)
                            .Replace("%EMAILLOCALPART%", localpart)
                            .Replace("%EMAILDOMAIN%", notificationAddressBase.Domain.Name.ToLowerInvariant())
                            .Replace("%EMAILHOSTNAME%", Path.GetFileNameWithoutExtension(notificationAddressBase.Domain.Name.ToLowerInvariant()));

            var notificationAddressSettings =
                SettingsManager.Instance.LoadSettings <NotificationAddressSettings>(Tenant);

            if (!string.IsNullOrEmpty(notificationAddressSettings.NotificationAddress))
            {
                throw new Exception("Setting already exists. Remove first.");
            }

            _CreateNotificationAddress(address, password, localpart, domain.Name);

            notificationAddressSettings = new NotificationAddressSettings {
                NotificationAddress = address
            };

            if (!SettingsManager.Instance.SaveSettings(notificationAddressSettings, Tenant))
            {
                _DeleteNotificationAddress(address);
                throw new Exception("Could not save notification address setting.");
            }

            var notificationAddress =
                factory.CreateNotificationAddress(localpart, domain, smtpSettings.hostname, smtpSettings.port,
                                                  smtpLogin,
                                                  true, smtpSettings.socket_type, smtpSettings.authentication_type);

            return(notificationAddress);
        }
 public abstract IMailAddress CreateMailAddress(int id, int tenant, string name, IWebDomain domain);
Example #34
0
        public IMailAddress AddAlias(string aliasName, IWebDomain domain, IMailServerFactory factory)
        {
            if (Aliases.Any(a => a.LocalPart == aliasName && a.Domain.Id == domain.Id))
                throw new DuplicateNameException("You want to add already existed alias");

            var addressBase = new MailAddressBase(aliasName, new WebDomainBase(domain))
                {
                    DateCreated = DateTime.UtcNow.ToDbStyle()
                };

            MailAddressDto aliasDto;
            using (var dbContextWithTran = TeamlabMailboxDal.CreateMailDbContext(true))
            {
                if (TeamlabAddressDal.IsAddressAlreadyRegistered(aliasName, domain.Name, dbContextWithTran.DbManager))
                    throw new DuplicateNameException("You want to add already existed alias");

                aliasDto = TeamlabAddressDal.AddMailboxAlias(Id, aliasName, addressBase.DateCreated,
                                                              domain.Id, domain.Name, domain.IsVerified, dbContextWithTran.DbManager);
                _AddAlias(addressBase);

                dbContextWithTran.CommitTransaction();
            }

            var alias = factory.CreateMailAddress(aliasDto.id, aliasDto.tenant, addressBase.LocalPart, domain);

            Aliases.Add(alias);

            return alias;
        }
Example #35
0
 public abstract void DeleteWebDomain(IWebDomain webDomain, IMailServerFactory factory);
 public abstract void DeleteWebDomain(IWebDomain web_domain, IMailServerFactory factory);
Example #37
0
 public abstract IMailGroup CreateMailGroup(string groupName, IWebDomain domain, List<int> addressIds, IMailServerFactory factory);
 public abstract IMailbox CreateMailbox(string localpart, string password, IWebDomain domain, IMailAccount account, IMailServerFactory factory);
Example #39
0
 public abstract IMailbox CreateMailbox(string localpart, string password, IWebDomain domain, IMailAccount account, IMailServerFactory factory);