/// <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); } }
// // 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); }