/// <summary>
        /// Gets a single Virtual MTA Group.
        /// </summary>
        /// <param name="id">ID of the Virtual MTA Group to get.</param>
        /// <returns>The Virtual MTA Group or NULL if none exist with ID</returns>
        public static VirtualMtaGroup GetVirtualMtaGroup(int id)
        {
            VirtualMtaGroup grp = VirtualMtaGroupDB.GetVirtualMtaGroup(id);

            grp.VirtualMtaCollection = VirtualMtaDB.GetVirtualMtasInVirtualMtaGroup(grp.ID);
            return(grp);
        }
        /// <summary>
        /// Get a collection of all of the Virtual MTA Groups.
        /// </summary>
        /// <returns></returns>
        public static IList <VirtualMtaGroup> GetAllVirtualMtaGroups()
        {
            IList <VirtualMtaGroup> ipGroups = VirtualMtaGroupDB.GetVirtualMtaGroups();

            // Get all the groups Virtual MTAs.
            foreach (VirtualMtaGroup grp in ipGroups)
            {
                grp.VirtualMtaCollection = VirtualMtaDB.GetVirtualMtasInVirtualMtaGroup(grp.ID);
            }

            return(ipGroups);
        }
        /// <summary>
        /// Gets the specfied MTA IP Group
        /// </summary>
        /// <param name="id">ID of the group to get.</param>
        /// <returns>The IP Group or NULL if doesn't exist.</returns>
        public static VirtualMtaGroup GetVirtualMtaGroup(int id)
        {
            VirtualMtaGroup group = null;

            // Try and get IPGroup from the in memory collection.
            if (_vmtaGroups.TryGetValue(id, out group))
            {
                // Only cache IP Groups for N minutes.
                if (group.CreatedTimestamp.AddMinutes(MtaParameters.MTA_CACHE_MINUTES) > DateTime.UtcNow)
                {
                    return(group);
                }
            }

            // We need to goto the database to get the group. Lock!
            lock (_MtaVirtualMtaGroupSyncLock)
            {
                // Check that something else didn't already load from the database.
                // If it did then we can just return that.
                _vmtaGroups.TryGetValue(id, out group);
                if (group != null && group.CreatedTimestamp.AddMinutes(MtaParameters.MTA_CACHE_MINUTES) > DateTime.UtcNow)
                {
                    return(group);
                }

                // Get group from the database.
                group = VirtualMtaGroupDB.GetVirtualMtaGroup(id);

                // Group doesn't exist, so don't try and get it's IPs
                if (group == null)
                {
                    return(null);
                }

                // Got the group, go get it's IPs.
                group.VirtualMtaCollection = VirtualMtaDB.GetVirtualMtasInVirtualMtaGroup(id);

                // Add the group to collection, so others can use it.
                _vmtaGroups.AddOrUpdate(id, group, new Func <int, VirtualMtaGroup, VirtualMtaGroup>(delegate(int key, VirtualMtaGroup existing)
                {
                    return(group);
                }));
                return(group);
            }
        }
Exemple #4
0
 //
 // GET: /Settings/
 public ActionResult Index()
 {
     return(View(new SettingsModel
     {
         ClientIdleTimeout = CfgPara.GetClientIdleTimeout(),
         DaysToKeepSmtpLogsFor = CfgPara.GetDaysToKeepSmtpLogsFor(),
         DefaultVirtualMtaGroupID = CfgPara.GetDefaultVirtualMtaGroupID(),
         VirtualMtaGroupCollection = VirtualMtaGroupDB.GetVirtualMtaGroups(),
         EventForwardingUrl = CfgPara.GetEventForwardingHttpPostUrl(),
         LocalDomains = CfgLocalDomains.GetLocalDomainsArray(),
         MaxTimeInQueue = CfgPara.GetMaxTimeInQueueMinutes(),
         ReceiveTimeout = CfgPara.GetReceiveTimeout(),
         RelayingPermittedIPs = CfgRelayingPermittedIP.GetRelayingPermittedIPAddresses(),
         RetryInterval = CfgPara.GetRetryIntervalBaseMinutes(),
         ReturnPathDomain = CfgPara.GetReturnPathDomain(),
         SendTimeout = CfgPara.GetSendTimeout()
     }));
 }
        public bool SaveGroup(SaveVirtualMtaGroupViewModel viewModel)
        {
            VirtualMtaGroup grp = null;

            if (viewModel.Id == WebInterfaceParameters.VIRTUALMTAGROUP_NEW_ID)
            {
                grp = new VirtualMtaGroup();
            }
            else
            {
                grp = VirtualMtaGroupDB.GetVirtualMtaGroup(viewModel.Id);
            }

            if (grp == null)
            {
                return(false);
            }

            grp.Name        = viewModel.Name;
            grp.Description = viewModel.Description;

            var vMtas = VirtualMtaDB.GetVirtualMtas();

            for (int i = 0; i < viewModel.MtaIDs.Length; i++)
            {
                VirtualMTA mta = vMtas.SingleOrDefault(m => m.ID == viewModel.MtaIDs[i]);
                if (mta == null)
                {
                    return(false);
                }
                grp.VirtualMtaCollection.Add(mta);
            }

            VirtualMtaWebManager.Save(grp);
            return(true);
        }
 /// <summary>
 /// Deletes a Virtual MTA Group.
 /// </summary>
 /// <param name="id">ID of the group to delete.</param>
 public static void DeleteGroup(int id)
 {
     VirtualMtaGroupDB.Delete(id);
 }
 /// <summary>
 /// Saves the Virtual MTA Group.
 /// </summary>
 /// <param name="grp">Virtual MTA Group to save.</param>
 public static void Save(VirtualMtaGroup grp)
 {
     VirtualMtaGroupDB.Save(grp);
 }