Example #1
0
        /// <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);
        }
Example #2
0
 //
 // GET: /VirtualMta/Edit
 public ActionResult Edit(int id = WebInterfaceParameters.VIRTUALMTA_NEW_ID)
 {
     if (id == WebInterfaceParameters.VIRTUALMTA_NEW_ID)
     {
         return(View(new VirtualMTA()));
     }
     return(View(VirtualMtaDB.GetVirtualMta(id)));
 }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <summary>
        /// Method will load IP addresses from the database if required.
        /// This method should be called before doing anything with the
        /// private IP collections.
        /// </summary>
        private static void LoadVirtualMtas()
        {
            if (_vmtaCollection != null &&
                _lastGotVirtualMtas.AddMinutes(MtaParameters.MTA_CACHE_MINUTES) > DateTime.UtcNow)
            {
                return;
            }

            _outboundMtas   = null;
            _inboundMtas    = null;
            _vmtaCollection = VirtualMtaDB.GetVirtualMtas();
        }
Example #5
0
        /// <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);
            }
        }
Example #6
0
        //
        // GET: /VirtualMta/
        public ActionResult Index()
        {
            var ips      = VirtualMtaDB.GetVirtualMtas();
            var summary  = new List <VirtualMTASummary>();
            var ipGroups = VirtualMtaWebManager.GetAllVirtualMtaGroups();

            foreach (var address in ips)
            {
                summary.Add(new VirtualMTASummary
                {
                    IpAddress = address,
                    SendTransactionSummaryCollection = OpenManta.WebLib.DAL.VirtualMtaTransactionDB.GetSendSummaryForIpAddress(address.ID)
                });
            }
            return(View(new VirtualMtaPageModel {
                VirtualMTASummaryCollection = summary.ToArray(), IpGroups = ipGroups
            }));
        }
Example #7
0
        //
        // GET: /VirtualMta/EditGroup
        public ActionResult EditGroup(int id = WebInterfaceParameters.VIRTUALMTAGROUP_NEW_ID)
        {
            VirtualMtaGroup grp = null;

            if (id == WebInterfaceParameters.VIRTUALMTAGROUP_NEW_ID)
            {
                grp = new VirtualMtaGroup();
            }
            else
            {
                grp = VirtualMtaWebManager.GetVirtualMtaGroup(id);
            }

            return(View(new VirtualMtaGroupCreateEditModel
            {
                VirtualMtaGroup = grp,
                VirtualMTACollection = VirtualMtaDB.GetVirtualMtas()
            }));
        }
Example #8
0
        public bool Save(SaveVirtualMtaViewModel viewModel)
        {
            VirtualMTA vMTA = null;

            if (viewModel.Id != WebInterfaceParameters.VIRTUALMTA_NEW_ID)
            {
                vMTA = VirtualMtaDB.GetVirtualMta(viewModel.Id);
            }
            else
            {
                vMTA = new VirtualMTA();
            }

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

            if (string.IsNullOrWhiteSpace(viewModel.HostName))
            {
                return(false);
            }

            IPAddress ip = null;

            try
            {
                ip = IPAddress.Parse(viewModel.IpAddress);
            }
            catch (Exception)
            {
                return(false);
            }

            vMTA.Hostname       = viewModel.HostName;
            vMTA.IPAddress      = ip;
            vMTA.IsSmtpInbound  = viewModel.Inbound;
            vMTA.IsSmtpOutbound = viewModel.Outbound;
            OpenManta.WebLib.DAL.VirtualMtaDB.Save(vMTA);
            return(true);
        }
Example #9
0
        public bool Save(int id, string hostname, string ipAddress, bool inbound, bool outbound)
        {
            VirtualMTA vMTA = null;

            if (id != WebInterfaceParameters.VIRTUALMTA_NEW_ID)
            {
                vMTA = MantaMTA.Core.DAL.VirtualMtaDB.GetVirtualMta(id);
            }
            else
            {
                vMTA = new VirtualMTA();
            }

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

            if (string.IsNullOrWhiteSpace(hostname))
            {
                return(false);
            }

            IPAddress ip = null;

            try
            {
                ip = IPAddress.Parse(ipAddress);
            }
            catch (Exception)
            {
                return(false);
            }

            vMTA.Hostname       = hostname;
            vMTA.IPAddress      = ip;
            vMTA.IsSmtpInbound  = inbound;
            vMTA.IsSmtpOutbound = outbound;
            VirtualMtaDB.Save(vMTA);
            return(true);
        }
        //
        // GET: /OutboundRules/Edit?id=
        public ActionResult Edit(int id = WebInterfaceParameters.OUTBOUND_RULES_NEW_PATTERN_ID)
        {
            OutboundMxPattern    pattern = null;
            IList <OutboundRule> rules   = null;

            if (id != WebInterfaceParameters.OUTBOUND_RULES_NEW_PATTERN_ID)
            {
                pattern = OutboundRuleDB.GetOutboundRulePatterns().Single(p => p.ID == id);
                rules   = OutboundRuleDB.GetOutboundRules().Where(r => r.OutboundMxPatternID == id).ToList();
            }
            else
            {
                pattern = new OutboundMxPattern();
                rules   = OutboundRuleDB.GetOutboundRules().Where(r => r.OutboundMxPatternID == MtaParameters.OUTBOUND_RULES_DEFAULT_PATTERN_ID).ToList();
            }


            IList <VirtualMTA> vMtas = VirtualMtaDB.GetVirtualMtas();

            return(View(new OutboundRuleModel(rules, pattern, vMtas)));
        }
Example #11
0
        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);
        }
Example #12
0
 public void Delete(int id)
 {
     VirtualMtaDB.Delete(id);
 }
Example #13
0
 //
 // GET: /Sends/VirtualMTA?sendID=
 public ActionResult VirtualMTA(string sendID)
 {
     return(View(new SendReportVirtualMta(VirtualMtaDB.GetSendVirtualMTAStats(sendID), sendID)));
 }