No Metadata Documentation available.
Inheritance: ObjectContext
Beispiel #1
0
 /// <summary>
 /// Retrieves log messages from database
 /// </summary>
 /// <returns></returns>
 public static List <AuditRecord> GetAuditRecords()
 {
     using (DNSAdminEntities db = new DNSAdminEntities())
     {
         return(db.AuditRecords.OrderByDescending(i => i.TimestampUTC).ToList());
     }
 }
Beispiel #2
0
        /// <summary>
        /// Database saving handler
        /// </summary>
        /// <param name="repeatedly">should it go indefinatly? just for background thread</param>
        private static void DatabaseHandler(bool repeatedly)
        {
            DateTime lastcheck = DateTime.MinValue;

            while (true)
            {
                //store all audit records
                using (DNSAdminEntities db = new DNSAdminEntities())
                {
                    AuditRecord auditrec = null;
                    while (auditrecords.TryDequeue(out auditrec))
                    {
                        db.AuditRecords.AddObject(auditrec);
                    }
                    db.SaveChanges();
                    db.AcceptAllChanges();
                }


                //check 10 minutes passed
                if ((DateTime.UtcNow - lastcheck).TotalMinutes > 10)
                {
                    lastcheck = DateTime.UtcNow;
                    //remove old records
                    int removeitems = 0;
                    using (DNSAdminEntities db = new DNSAdminEntities())
                    {
                        var deletelist = db.AuditRecords.OrderByDescending(i => i.TimestampUTC).ToList().Skip(AuditMediaDBMaximumRecords).ToList();
                        removeitems = deletelist.Count();
                        foreach (var item in deletelist)
                        {
                            db.DeleteObject(item);
                        }
                        db.SaveChanges();
                        db.AcceptAllChanges();
                    }
                    //if any records removed, compact database
                    if (removeitems > 0)
                    {
                        using (SqlCeEngine engine = new SqlCeEngine("Data Source = |DataDirectory|\\DNSAdmin.sdf"))
                        {
                            engine.Shrink();
                        }
                    }
                }

                if (repeatedly)
                {
                    Thread.Sleep(5000);
                }
                else
                {
                    break;
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Checks if access should be allowed to this server
        /// </summary>
        /// <param name="domain"></param>
        /// <param name="username"></param>
        /// <param name="serverName"></param>
        /// <returns></returns>
        public static bool IsAllowedServer(string domain, string username, string serverName)
        {
            //Check server is in config or config is empty
            if ((AppSettings.LimitToServers.Length > 0) && (!AppSettings.LimitToServers.Contains(serverName.ToLower())))
                return false;

            //Check server is in allowed list
            using (DNSAdminEntities db = new DNSAdminEntities())
            {
                string user = domain + "\\" + username;
                var servers = db.DNSServers.Where(i => i.Username == user && i.ServerName == serverName);
                if (servers.FirstOrDefault() != null)
                    return true;
            }

            return false;
        }
Beispiel #4
0
        /// <summary>
        /// Checks if access should be allowed to this server
        /// </summary>
        /// <param name="domain"></param>
        /// <param name="username"></param>
        /// <param name="serverName"></param>
        /// <returns></returns>
        public static bool IsAllowedServer(string domain, string username, string serverName)
        {
            //Check server is in config or config is empty
            if ((AppSettings.LimitToServers.Length > 0) && (!AppSettings.LimitToServers.Contains(serverName.ToLower())))
            {
                return(false);
            }

            //Check server is in allowed list
            using (DNSAdminEntities db = new DNSAdminEntities())
            {
                string user    = domain + "\\" + username;
                var    servers = db.DNSServers.Where(i => i.Username == user && i.ServerName == serverName);
                if (servers.FirstOrDefault() != null)
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #5
0
        public ActionResult Tree(string id, string serverName, string zoneName, string search_string)
        {
            var authres = CheckAuthorizationAndLog(Audit.AuditTypeEnum.View, false, serverName, zoneName, "", "Show server in tree");
            if (authres != null)
                return authres;

            Response.Expires = -1;

            //search
            if (!string.IsNullOrEmpty(search_string))
            {
                List<string> searchids = new List<string>();
                using (DNSAdminEntities db = new DNSAdminEntities())
                {
                    string user = Session["Domain"] + "\\" + Session["Username"];
                    var searchservers = db.DNSServers.Where(i => i.Username == user).ToList();
                    foreach (var server in searchservers)
                    {

                        DNSManagement.Server msserver = new DNSManagement.Server(server.ServerName, Session["Username"] as string, Session["Password"] as string);
                        var zones = msserver.GetZones();
                        foreach (var zone in zones)
                        {
                            var resources = zone.GetRecords();

                            var resexist = resources.Where(i => i.OwnerName.ToLower().Contains(search_string.ToLower())).Any();

                            if ((zone.Name.ToLower().Contains(search_string.ToLower())) || (resexist))
                            {
                                searchids.Add("#Server_" + server.ServerName);
                                if (zone.Reverse)
                                {
                                    searchids.Add("#ReverseLookupZones_" + server.ServerName);
                                }
                                else if (zone.ZoneType == DNSManagement.Zone.ZoneTypeEnum.Forwarder)
                                {
                                    searchids.Add("#ConditionalForwarders_" + server.ServerName);
                                }
                                else
                                {
                                    searchids.Add("#ForwardLookupZones_" + server.ServerName);
                                }

                            }

                            if (resexist)
                            {
                                searchids.Add("#Zone_" + zone.DnsServerName + "_" + zone.Name);
                            }
                        }

                    }
                }

                return Json(searchids.ToArray(), JsonRequestBehavior.AllowGet);
            }

            var splits = id.Split('_');

            var key = (splits.Length > 0) ? splits[0] : "";

            //var value = (splits.Length > 1) ? splits[1] : "";
            //var value2 = (splits.Length > 2) ? splits[2] : "";

            switch (key)
            {
                case "DNSServers":
                    List<DNSServer> servers = null;
                    using (DNSAdminEntities db = new DNSAdminEntities())
                    {
                        string user = Session["Domain"] + "\\" + Session["Username"];
                        servers = db.DNSServers.Where(i => i.Username == user).ToList();
                    }
                    List<JsTreeNode> jsServers = new List<JsTreeNode>();
                    foreach (var server in servers)
                    {
                        jsServers.Add(new JsTreeNodeChildren
                        {
                            children = new List<JsTreeNode>(),
                            attr = new Attributes
                            {
                                id = "Server_" + server.ServerName,
                                serverName = server.ServerName,
                                href = "/Home/DNSServer?serverName=" + server.ServerName
                            },
                            data = new Data
                            {
                                title = server.ServerName,
                                icon = "/Content/icons/server.png"
                            },
                            state = "closed"
                        });
                    }
                    jsServers.Add(new JsTreeNode
                    {
                        attr = new Attributes
                        {
                            id = "AuditLogs",
                            href = "/Home/AuditLog"
                        },
                        data = new Data
                        {
                            title = "Audit Logs",
                            icon = "/Content/icons/log.png"
                        },
                    });
                    return Json(jsServers, JsonRequestBehavior.AllowGet);
                case "Server":
                    List<JsTreeNode> jsServerAreas = new List<JsTreeNode>();
                    jsServerAreas.Add(new JsTreeNode
                    {
                        attr = new Attributes
                        {
                            id = "Logs_" + serverName,
                            serverName = serverName,
                            href = "/Home/Logs?serverName=" + serverName
                        },
                        data = new Data
                        {
                            title = "Logs",
                            icon = "/Content/icons/log.png"
                        },
                    });
                    jsServerAreas.Add(new JsTreeNodeChildren
                    {
                        children = new List<JsTreeNode>(),
                        attr = new Attributes
                        {
                            id = "ForwardLookupZones_" + serverName,
                            serverName = serverName,
                            href = "/Home/ForwardLookupZones?serverName=" + serverName
                        },
                        data = new Data
                        {
                            title = "Forward Lookup Zones",
                            icon = "/Content/icons/folder.png"
                        },
                        state = "closed"
                    });
                    jsServerAreas.Add(new JsTreeNodeChildren
                    {
                        children = new List<JsTreeNode>(),
                        attr = new Attributes
                        {
                            id = "ReverseLookupZones_" + serverName,
                            serverName = serverName,
                            href = "/Home/ReverseLookupZones?serverName=" + serverName
                        },
                        data = new Data
                        {
                            title = "Reverse Lookup Zones",
                            icon = "/Content/icons/folder.png"
                        },
                        state = "closed"
                    });
                    jsServerAreas.Add(new JsTreeNodeChildren
                    {
                        children = new List<JsTreeNode>(),
                        attr = new Attributes
                        {
                            id = "ConditionalForwarders_" + serverName,
                            serverName = serverName,
                            href = "/Home/ConditionalForwarders?serverName=" + serverName
                        },
                        data = new Data
                        {
                            title = "Conditional Forwarders",
                            icon = "/Content/icons/folder.png"
                        },
                        state = "closed"
                    });
                    jsServerAreas.Add(new JsTreeNode
                    {
                        attr = new Attributes
                        {
                            id = "nslookup_" + serverName,
                            serverName = serverName,
                            href = "/Home/nslookup?serverName=" + serverName
                        },
                        data = new Data
                        {
                            title = "nslookup",
                            icon = "/Content/icons/kfind.png"
                        },
                    });
                    return Json(jsServerAreas, JsonRequestBehavior.AllowGet);
                //break;
                case "ForwardLookupZones":
                    List<JsTreeNode> jsServerForwardZones = new List<JsTreeNode>();

                    jsServerForwardZones.AddRange(GetForwardLookupZones(serverName).Select(i => new JsTreeNodeChildren
                    {
                        children = new List<JsTreeNode>(),
                        attr = new Attributes
                        {
                            id = "Zone_" + i.DnsServerName + "_" + i.Name,
                            serverName = serverName,
                            zoneName = i.Name,
                            href = "/Home/Zone?serverName=" + serverName + "&zoneName=" + i.Name
                        },
                        data = new Data
                        {
                            title = i.Name,
                            icon = "/Content/icons/folder.png"
                        },
                        state = "closed"
                    }));

                    return Json(jsServerForwardZones, JsonRequestBehavior.AllowGet);
                //break;
                case "ReverseLookupZones":
                    List<JsTreeNode> jsServerReverseZones = new List<JsTreeNode>();

                    jsServerReverseZones.AddRange(GetReverseLookupZones(serverName).Select(i => new JsTreeNodeChildren
                    {
                        children = new List<JsTreeNode>(),
                        attr = new Attributes
                        {
                            id = "Zone_" + i.DnsServerName + "_" + i.Name,
                            serverName = serverName,
                            zoneName = i.Name,
                            href = "/Home/Zone?serverName=" + serverName + "&zoneName=" + i.Name
                        },
                        data = new Data
                        {
                            title = i.Name,
                            icon = "/Content/icons/folder.png"
                        },
                        state = "closed"
                    }));

                    return Json(jsServerReverseZones, JsonRequestBehavior.AllowGet);
                //break;
                case "ConditionalForwarders":
                    List<JsTreeNode> jsServerConditionalForwardersZones = new List<JsTreeNode>();

                    jsServerConditionalForwardersZones.AddRange(GetConditionalForwardersZones(serverName).Select(i => new JsTreeNodeChildren
                    {
                        children = new List<JsTreeNode>(),
                        attr = new Attributes
                        {
                            id = "Zone_" + i.DnsServerName + "_" + i.Name,
                            serverName = serverName,
                            zoneName = i.Name,
                            href = "/Home/Zone?serverName=" + serverName + "&zoneName=" + i.Name
                        },
                        data = new Data
                        {
                            title = i.Name,
                            icon = "/Content/icons/folder.png"
                        },
                        state = "closed"
                    }));

                    return Json(jsServerConditionalForwardersZones, JsonRequestBehavior.AllowGet);
                //break;
                case "Zone":
                    List<JsTreeNode> jsZoneRRs = new List<JsTreeNode>();

                    DNSManagement.Server msserver = new DNSManagement.Server(serverName, Session["Username"] as string, Session["Password"] as string);

                    var zoneRRs = msserver.GetZones().FirstOrDefault(i => i.Name == zoneName).GetRecords();

                    jsZoneRRs.AddRange(zoneRRs.Select(i => new JsTreeNodeChildren
                            {
                                children = new List<JsTreeNode>(),
                                attr = new Attributes
                                {
                                    id = "ZoneRR_" + i.DnsServerName + "_" + i.ContainerName + "_" + HttpUtility.UrlEncode(i.TextRepresentation).Replace("%","_"),
                                    serverName = serverName,
                                    zoneName = zoneName,
                                    href = "/Home/ZoneRR?serverName=" + serverName + "&zoneName=" + zoneName + "&zoneTR=" + HttpUtility.UrlEncode(i.TextRepresentation)
                                },
                                data = new Data
                                {
                                    title = i.OwnerName,
                                    icon = "/Content/icons/folder.png"
                                },
                                state = "closed"
                            }));

                    return Json(jsZoneRRs, JsonRequestBehavior.AllowGet);
                //break;

            }
            return Content("Error");
        }
Beispiel #6
0
        public ActionResult ServersSave(ServersModel model)
        {
            Audit.Log(Audit.AuditTypeEnum.Change, model.Name, (Session["Domain"] as string) + "\\" + (Session["Username"] as string), NetworkHelper.ClientIPAddress(HttpContext), "Saved new server to list","","");

            using (DNSAdminEntities db = new DNSAdminEntities())
            {
                string user = Session["Domain"] + "\\" + Session["Username"];
                DNSServer server = new DNSServer();
                server.Id = Guid.NewGuid();
                server.Username = user;
                server.ServerName = model.Name;
                db.DNSServers.AddObject(server);
                db.SaveChanges();
            }

            return Content(true.ToString());
        }
Beispiel #7
0
        public ActionResult ServersDelete(string serverName)
        {
            Audit.Log(Audit.AuditTypeEnum.Change, serverName, (Session["Domain"] as string) + "\\" + (Session["Username"] as string), NetworkHelper.ClientIPAddress(HttpContext), "Deleted server from list","","");

            using (DNSAdminEntities db = new DNSAdminEntities())
            {
                string user = Session["Domain"] + "\\" + Session["Username"];
                var servers = db.DNSServers.Where(i => i.Username == user && i.ServerName == serverName).ToList();
                foreach (var server in servers)
                    db.DNSServers.DeleteObject(server);

                db.SaveChanges();
            }

            return Content(true.ToString());
        }
Beispiel #8
0
        public ActionResult Servers()
        {
            List<DNSServer> servers = null;
            using (DNSAdminEntities db = new DNSAdminEntities())
            {
                string user = Session["Domain"] + "\\" + Session["Username"];
                servers = db.DNSServers.Where(i => i.Username == user).ToList();
            }

            ViewData["servers"] = servers;

            return PartialView();
        }
Beispiel #9
0
        /// <summary>
        /// Database saving handler
        /// </summary>
        /// <param name="repeatedly">should it go indefinatly? just for background thread</param>
        private static void DatabaseHandler(bool repeatedly)
        {
            DateTime lastcheck = DateTime.MinValue;
            while (true)
            {
                //store all audit records
                using (DNSAdminEntities db = new DNSAdminEntities())
                {
                    AuditRecord auditrec = null;
                    while (auditrecords.TryDequeue(out auditrec))
                    {
                        db.AuditRecords.AddObject(auditrec);
                    }
                    db.SaveChanges();
                    db.AcceptAllChanges();
                }

                //check 10 minutes passed
                if ((DateTime.UtcNow - lastcheck).TotalMinutes > 10)
                {
                    lastcheck = DateTime.UtcNow;
                    //remove old records
                    int removeitems = 0;
                    using (DNSAdminEntities db = new DNSAdminEntities())
                    {
                        var deletelist = db.AuditRecords.OrderByDescending(i => i.TimestampUTC).ToList().Skip(AuditMediaDBMaximumRecords).ToList();
                        removeitems = deletelist.Count();
                        foreach (var item in deletelist)
                            db.DeleteObject(item);
                        db.SaveChanges();
                        db.AcceptAllChanges();
                    }
                    //if any records removed, compact database
                    if (removeitems > 0)
                    {
                        using (SqlCeEngine engine = new SqlCeEngine("Data Source = |DataDirectory|\\DNSAdmin.sdf"))
                        {
                            engine.Shrink();
                        }
                    }
                }

                if (repeatedly)
                    Thread.Sleep(5000);
                else
                    break;
            }
        }
Beispiel #10
0
 /// <summary>
 /// Retrieves log messages from database
 /// </summary>
 /// <returns></returns>
 public static List<AuditRecord> GetAuditRecords()
 {
     using (DNSAdminEntities db = new DNSAdminEntities())
     {
         return db.AuditRecords.OrderByDescending(i => i.TimestampUTC).ToList();
     }
 }