Beispiel #1
0
        public static Whitelist?Find(int id)
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            whitelist match = contraDB.whitelist.SingleOrDefault(v => v.id == id);

            return(match != null ? new Whitelist(match) : null);
        }
Beispiel #2
0
        public static void Remove(Blacklist row)
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            var match = contraDB.blacklist.SingleOrDefault(v => v.id == row.ID);

            contraDB.blacklist.Remove(match);
            contraDB.SaveChanges();
        }
Beispiel #3
0
        public static List <Whitelist> List()
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            return(contraDB.whitelist
                   .OrderByDescending(v => v.id)
                   .Select(v => new Whitelist(v))
                   .ToList());
        }
Beispiel #4
0
        public static List <Lease> FindByIP(IPAddress ip)
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            return(contraDB.lease_details_by_ip
                   .Where(v => Equals(v.ip, ip))
                   .Select(v => new Lease(v))
                   .ToList());
        }
Beispiel #5
0
        public static List <Lease> LeaseDetailsByMAC(TimeSpan since)
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            // TODO: Don't use client evaluation
            return(contraDB.lease_details_by_mac
                   .ToList()
                   .Where(v => v.time !.Value > DateTime.Now.Subtract(since))
                   .Select(v => new Lease(v))
                   .ToList());
        }
Beispiel #6
0
        public static dynamic LeaseVendorCounts(int min)
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            return(contraDB.lease_vendor_counts
                   .Where(v => v.c >= min)
                   .Select(v => new
            {
                vendor = v.vendor,
                c = v.c !.Value,
                percent = v.ratio !.Value
            })
Beispiel #7
0
        public static void Submit(Blacklist newRule)
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            contraDB.blacklist.Add(new blacklist
            {
                pattern = newRule.Pattern,
                expires = newRule.Expires,
                _class  = 0,
            });

            contraDB.SaveChanges();
        }
Beispiel #8
0
        public static IEnumerable <Whitelist> List(string clientIP)
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            return(contraDB.whitelist
                   .Where(v => v.ips != null)
                   .Where(v => v.ips.Length == 1)
                   .OrderByDescending(v => v.id)
                   .ToList()
                   .Where(v => v.ips[0].ToString() == clientIP)
                   .Select(v => new Whitelist(v))
                   .ToList());
        }
Beispiel #9
0
        public static IEnumerable <IOption <string> > Options()
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();
            if (_cache == null)
            {
                _cache = contraDB.oui_vendors
                         // .Take(100)
                         .Select(v => new Option <string>
                {
                    ID           = v.vendor,
                    OptionText   = v.vendor,
                    SelectedText = v.vendor
                }).ToList();
            }

            return(_cache);
        }
Beispiel #10
0
        public static bool Update(Config config)
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            Config?current = Read();

            if (current != null)
            {
                if (current.ToString() == config.ToString())
                {
                    Common.Logger.Info(
                        "The latest config in the database matches the new config passed to ConfigController.Update(); not storing new config.",
                        new Fields {
                        { "Config", config.ToString() }
                    }
                        );
                    return(true);
                }
            }

            Common.Logger.Info(
                "Storing new config in database.",
                new Fields {
                { "Config", config.ToString() }
            }
                );

            contraDB.config.Add(new config
            {
                id              = 0,
                sources         = config.Sources.ToArray(),
                search_domains  = config.SearchDomains.ToArray(),
                domain_needed   = config.DomainNeeded,
                spoofed_a       = config.SpoofedA,
                spoofed_aaaa    = config.SpoofedAAAA,
                spoofed_cname   = config.SpoofedCNAME,
                spoofed_default = config.SpoofedDefault
            });

            contraDB.SaveChanges();

            return(true);
        }
Beispiel #11
0
        public static void Submit(Whitelist whitelist)
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            whitelist dbWhitelist = new whitelist
            {
                pattern = whitelist.Pattern,
                expires = whitelist.Expires,
                ips     = whitelist.IPs?.ToArray(),
                subnets = whitelist.Subnets?
                          .Select(v => new ValueTuple <IPAddress, int>(v.Network, v.Cidr))
                          .ToArray(),
                hostnames = whitelist.Hostnames?.ToArray(),
                macs      = whitelist.MACs?.ToArray(),
                vendors   = whitelist.Vendors?.ToArray()
            };

            contraDB.Add(dbWhitelist);
            contraDB.SaveChanges();

            whitelist.ID = dbWhitelist.id;
        }
Beispiel #12
0
        public static Config?Read()
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            if (!contraDB.config.Any())
            {
                return(null);
            }

            config config = contraDB.config.OrderByDescending(v => v.id).Take(1).Single();

            return(new Config
            {
                ID = config.id,
                Sources = config.sources.ToList(),
                SearchDomains = config.search_domains.ToList(),
                DomainNeeded = config.domain_needed ?? false,
                SpoofedA = config.spoofed_a,
                SpoofedAAAA = config.spoofed_aaaa,
                SpoofedCNAME = config.spoofed_cname,
                SpoofedDefault = config.spoofed_default
            });
        }
Beispiel #13
0
        public static void Update(Whitelist whitelist)
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            whitelist?match = contraDB.whitelist.SingleOrDefault(v => v.id == whitelist.ID);

            if (match == null)
            {
                throw new ArgumentException($"Could not find whitelist rule with ID '{whitelist.ID}'");
            }

            match.pattern = whitelist.Pattern;
            match.expires = whitelist.Expires;
            match.ips     = whitelist.IPs?.ToArray();
            match.subnets = whitelist.Subnets?
                            .Select(v => new ValueTuple <IPAddress, int>(v.Network, v.Cidr))
                            .ToArray();
            match.hostnames = whitelist.Hostnames?.ToArray();
            match.macs      = whitelist.MACs?.ToArray();
            match.vendors   = whitelist.Vendors?.ToArray();

            contraDB.Update(match);
            contraDB.SaveChanges();
        }
Beispiel #14
0
        public static IEnumerable <Blacklist> List()
        {
            using ContraCoreDBContext contraDB = new ContraCoreDBContext();

            return(contraDB.blacklist.Select(v => new Blacklist(v)).ToList());
        }
Beispiel #15
0
 public static int BlacklistRuleCount()
 {
     using ContraCoreDBContext contraDB = new ContraCoreDBContext();
     return(contraDB.blacklist.Count());
 }
Beispiel #16
0
 public static int OUICount()
 {
     using ContraCoreDBContext contraDB = new ContraCoreDBContext();
     return(contraDB.oui.Count());
 }