示例#1
0
        private bool IPRestricted(string ipAddress, List <CompanyIPMaskDTO> restrictions)
        {
            //Rules:
            //Has Allowed List Only:        Only Allowed if on list.
            //Has Denied List Only:         Only Allowed if not on List.
            //Has Both Lists:               Only Allowed if on Allowed list and not in denied list.
            bool isAllowed  = true;
            bool hasAllowed = false;
            bool hasDenied  = false;

            if (restrictions.Count() > 0)
            {
                IPList allowed = new IPList();
                foreach (var item in restrictions.Where(r => r.Allowed))
                {
                    hasAllowed = true;
                    allowed.Add(BitConverter.ToUInt32(item.IPMask, 0), BitConverter.ToUInt32(item.SubnetMask, 0));
                }
                IPList denied = new IPList();
                foreach (var item in restrictions.Where(r => !r.Allowed))
                {
                    hasDenied = true;
                    denied.Add(BitConverter.ToUInt32(item.IPMask, 0), BitConverter.ToUInt32(item.SubnetMask, 0));
                }
                if (hasDenied)
                {
                    isAllowed = !denied.CheckNumber(ipAddress);
                }
                if (hasAllowed && isAllowed)
                {
                    isAllowed = allowed.CheckNumber(ipAddress);
                }
            }
            return(!isAllowed);
        }
示例#2
0
 private void connection_button_Click(object sender, EventArgs e)
 {
     setIP(IPList.GetItemText(IPList.SelectedItem), NETMASK, "");
     connectToPeer("MicroITS");
     connection_button.BackColor    = Color.Green;
     disconnection_button.BackColor = Color.Red;
 }
示例#3
0
 public static IPList loadIpList(String fileName)
 {
     IPList list = new IPList();
     try
     {
         // Create an instance of StreamReader to read from a file.
         // The using statement also closes the StreamReader.
         using (StreamReader sr = new StreamReader(fileName))
         {
             String line;
             // Read and display lines from the file until the end of
             // the file is reached.
             while ((line = sr.ReadLine()) != null)
             {
                 String[] ip_mask = line.Split('/');
                 if (ip_mask.Length == 2)
                 {
                     list.Add(ip_mask[0], Convert.ToInt32(ip_mask[1]));
                 }
             }
         }
     }
     catch (Exception e)
     {
     }
     return list;
 }
示例#4
0
        public void Test_True_Constructor_2()
        {
            var ip_list = new IPList(new IP("1", "12.12.12.12/32"));
            var ip      = new IP("1", "12.12.12.12/32");

            Assert.True(ip_list.Data[0].Equals(ip));
        }
示例#5
0
        public void Test_False_Constructor_2(string id, string subnet)
        {
            var ip_list = new IPList(new IP("1", "12.12.12.12/32"));
            var ip      = new IP(id, subnet);

            Assert.False(ip_list.Data[0].Equals(ip));
        }
示例#6
0
        public void Test_True_GroupIPs2()
        {
            var ip  = new IP("1", "12.12.12.12/30");
            var ip2 = new IP("2", "12.12.12.12/30");
            var ip3 = new IP("3", "12.12.12.12/32");
            var ip4 = new IP("4", "14.14.14.14/30");

            var grouped_ips = new GroupedIPs(ip);

            grouped_ips.IPsList.Add(ip2);
            grouped_ips.InnerIPsList.Add(ip3);

            var grouped_ips2 = new GroupedIPs(ip4);

            var expected_grouped_ips_list = new List <GroupedIPs>
            {
                grouped_ips,
                grouped_ips2
            };

            var ip_list = new IPList(ip);

            ip_list.Data.Add(ip2);
            ip_list.Data.Add(ip3);
            ip_list.Data.Add(ip4);

            var ret = _subnetsService.GroupIPs(ip_list);

            CollectionAssert.AreEqual(ret, expected_grouped_ips_list);
        }
示例#7
0
        /// <summary>
        /// Конструктор репозитория. В нем происходит инициализация клиента для подклбчения к веб службе и загрузка списка IP-адресов.
        /// </summary>
        public IPsRepository()
        {
            _client = new IPsRepositoryWCFClient();

            _ipList = new IPList();

            Task.WaitAll(Task.Run(() => GetIpListFromIPsWCFAsync()));
        }
示例#8
0
        private async Task LoadDataTask()
        {
            var loadRoute = UpdateRoute();

            IPList.Clear();

            int o = 0;

            while (true)
            {
                string reqUri         = "index.php?action=ip_db&a2=pub&_o=" + o;
                string responseString = await SendRequest.GET(reqUri);

                HtmlDocument doc = new HtmlDocument();
                doc.LoadHtml(responseString);

                HtmlNode node = doc.DocumentNode.SelectSingleNode(@"//form[@name='frm_mis']");

                HtmlNodeCollection childs = node.SelectNodes(@"//form[@name='frm_mis']/tr");

                int count = 0;

                for (int i = 0; i < childs.Count; i++)
                {
                    if (i == 0 || i == childs.Count - 1 || childs[i] == null)
                    {
                        continue;
                    }

                    string ip      = childs[i].SelectSingleNode(@"./td[@class='green']/a").InnerText;
                    string name    = StringHelper.RemoveSpecial(childs[i].SelectSingleNode(@"./td[4]").InnerText);
                    string admin   = childs[i].SelectSingleNode(@"./td[5]/i").InnerText;
                    string owned   = childs[i].SelectSingleNode(@"./td[6]").InnerText;
                    string connect = childs[i].SelectSingleNode(@".//tr[@class='m2']/td[1]/a").GetAttributeValue("href", "");
                    string bounce  = childs[i].SelectSingleNode(@".//tr[@class='m2']/td[2]/a").GetAttributeValue("href", "");

                    IPDBModel newData = new IPDBModel()
                    {
                        IP      = ip,
                        Name    = name,
                        Admin   = admin,
                        Owned   = owned,
                        Connect = connect,
                        Bounce  = bounce
                    };
                    IPList.Add(newData);
                    count++;
                }

                if (count == 0)
                {
                    break;
                }

                o += 20;
            }
            await loadRoute;
        }
示例#9
0
        public void Test_False_Equals2()
        {
            var ip = new IP("1", "12.12.12.12/32");

            var ip_list          = new IPList(ip);
            var expected_ip_list = new IPList();

            Assert.False(ip_list.Equals(expected_ip_list));
        }
示例#10
0
        /// <summary>
        /// Splits the incoming ip string of the format "IP,IP" example "10.2.0.0,10.3.0.0" and adds the result to the IPList
        /// </summary>
        /// <param name="ips">The ips.</param>
        /// <param name="list">The list.</param>
        private void SplitAndAddSingleIPs(string ips, IPList list)
        {
            var splitSingleIPs = ips.Split(',');

            foreach (string ip in splitSingleIPs)
            {
                list.Add(ip);
            }
        }
示例#11
0
        public void AddSingle_ShouldWork()
        {
            var iplist = new IPList();

            iplist.Add("10.0.0.3");
            iplist.CheckNumber("10.0.0.2").ShouldBeFalse();
            iplist.CheckNumber("10.0.0.3").ShouldBeTrue();
            iplist.CheckNumber("10.0.0.4").ShouldBeFalse();
        }
示例#12
0
 public PListTest()
 {
     _pList = new PList <string, string> {
         ["prop1"] = "value1",
         ["prop2"] = "value2",
         ["prop3"] = "value3",
         ["prop4"] = "value4",
         ["prop5"] = "value5",
     };
 }
示例#13
0
        public void Test_False_Equals(string id, string subnet)
        {
            var ip          = new IP("1", "12.12.12.12/32");
            var expected_ip = new IP(id, subnet);

            var ip_list          = new IPList(ip);
            var expected_ip_list = new IPList(expected_ip);

            Assert.False(ip_list.Equals(expected_ip_list));
        }
示例#14
0
        /// <summary>
        /// Splits the incoming ip string of the format "IP;MASK,IP;MASK" example "10.2.0.0;255.255.0.0,10.3.0.0;255.255.0.0" and adds the result to the IPList
        /// </summary>
        /// <param name="ips">The ips.</param>
        /// <param name="list">The list.</param>
        private void SplitAndAddMaskedIPs(string ips, IPList list)
        {
            var splitMaskedIPs = ips.Split(',');

            foreach (string maskedIp in splitMaskedIPs)
            {
                var ipAndMask = maskedIp.Split(';');
                list.Add(ipAndMask[0], ipAndMask[1]); // IP;MASK
            }
        }
示例#15
0
        private IPList SetDefaultIPList()
        {
            var ip      = new IP("ca3d03674e2045ef85b824a14a386698", "12.12.12.12/32");
            var ip2     = new IP("38a8e64feb7244da816063d63868f38e", "12.12.12.12/30");
            var ip_list = new IPList(ip);

            ip_list.Data.Add(ip2);

            return(ip_list);
        }
示例#16
0
        public void Test_False_Equals3()
        {
            var ip = new IP("1", "12.12.12.12/32");

            var ip_list = new IPList(ip);

            var expected_ip_list = new IPList(ip);

            expected_ip_list.Data.Add(new IP("1", "13.13.13.13/29"));

            Assert.False(ip_list.Equals(expected_ip_list));
        }
示例#17
0
        private void IPList_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (IPList.SelectedIndex >= 0)
            {
                for (int i = 0; i < IPList.Items.Count; i++)
                {
                    IPList.SetItemChecked(i, false);
                }

                IPList.SetItemChecked(IPList.SelectedIndex, true);
            }
        }
        private void UpdateFileList()
        {
            var content = JsonConvert.SerializeObject(IPList.ToList());

            if (File.Exists(FILE_NAME))
            {
                File.Delete(FILE_NAME);
            }

            using (var sw = new StreamWriter(FILE_NAME))
            {
                sw.Write(content);
            }
        }
示例#19
0
        public void Test_False_Constructor_3(string id, string subnet)
        {
            var ip          = new IP("1", "12.12.12.12/32");
            var tmp_ip_list = new List <IP> {
                ip
            };
            var ip_list = new IPList(tmp_ip_list);

            var expected_ip      = new IP(id, subnet);
            var expected_ip_list = new IPList();

            expected_ip_list.Data.Add(expected_ip);

            Assert.False(ip_list.Equals(expected_ip_list));
        }
示例#20
0
        public void Test_True_Constructor_3()
        {
            var ip          = new IP("1", "12.12.12.12/32");
            var tmp_ip_list = new List <IP>();

            tmp_ip_list.Add(ip);

            var ip_list = new IPList(tmp_ip_list);

            var expected_ip_list = new IPList();

            expected_ip_list.Data.Add(ip);

            Assert.True(ip_list.Equals(expected_ip_list));
        }
示例#21
0
 private void Handle(byte[] receiveDataArray, int nRecv, EndPoint remoteEP)
 {
     if (receiveDataArray != null)
     {
         if ((remoteEP as IPEndPoint).Address.ToString() == ZCIP.ToString() && (remoteEP as IPEndPoint).Port == ZCPort)
         {
             IPList list = IPConfigure.IPList.Find((IPList iplist) => { return(iplist.DeviceID == receiveDataArray[0]); });
             SendControlData(receiveDataArray, nRecv - 1, 1, list.IP, list.Port);
         }
         else
         {
             SendControlData(receiveDataArray, nRecv, 0, ZCIP, ZCPort);
         }
     }
     Array.Clear(receiveDataArray, 0, receiveDataArray.Length);
 }
示例#22
0
        public void AddRange_ShouldWork()
        {
            var iplist = new IPList();

            iplist.AddRange("0.0.0.5", "0.0.0.20");
            for (uint ip = 0; ip < 5; ip++)
            {
                iplist.CheckNumber(ip).ShouldBeFalse();
            }
            for (uint ip = 5; ip < 21; ip++)
            {
                iplist.CheckNumber(ip).ShouldBeTrue();
            }
            for (uint ip = 21; ip < 32; ip++)
            {
                iplist.CheckNumber(ip).ShouldBeFalse();
            }
        }
示例#23
0
        /// <summary>
        /// Sets an IP Mask
        /// </summary>
        public JsonResult IPMask(CompanyIPMaskDTO ipmask)
        {
            ExceptionsML bizEx;
            var          client = SvcBldr.Company();
            IPList       l      = new IPList();

            if (!String.IsNullOrEmpty(ipmask.IPAddress))
            {
                ipmask.IPMask = BitConverter.GetBytes(l.ParseIP(ipmask.IPAddress));
            }
            if (!String.IsNullOrEmpty(ipmask.SubnetAddress))
            {
                ipmask.SubnetMask = BitConverter.GetBytes(l.ParseIP(ipmask.SubnetAddress));
            }

            ipmask = client.SetIPMask(ipmask, out bizEx);
            return(Result(ipmask, bizEx));
        }
示例#24
0
        /// <summary>
        /// Метод группровки IP-адресов.
        /// </summary>
        /// <param name="ip_list">Объект класса IPList, со список IP-адресов, который будет сгруппирован.</param>
        /// <returns>Список объектов класса GroupedIPs с сгруппированными IP-адресами.</returns>
        public List <GroupedIPs> GroupIPs(IPList ip_list)
        {
            var sorted_ip_list = ip_list.Data;

            sorted_ip_list.Sort((ip, ip2) => ip.Mask.CompareTo(ip2.Mask));

            var storage = new List <GroupedIPs>
            {
                new GroupedIPs(sorted_ip_list[0])
            };

            sorted_ip_list.RemoveAt(0);

            foreach (var ip in sorted_ip_list)
            {
                for (var i = 0; i < storage.Count; i++)
                {
                    var result = CheckIsInSubnet(ip, storage[i].IPsList[0]);

                    // если ip и storage[i].IPsList[0] это одна и та же подсеть
                    if (result == 2)
                    {
                        storage[i].IPsList.Add(ip);
                        break;
                    }

                    // если ip входит в storage[i].IPsList[0]
                    if (result == 1)
                    {
                        storage[i].InnerIPsList.Add(ip);
                        break;
                    }

                    // если ip  не входит в storage[i].IPsList[0]
                    // и это последний ip, который есть в storage
                    if (result == 0 && i.Equals(storage.Count - 1))
                    {
                        storage.Add(new GroupedIPs(ip));
                        break;
                    }
                }
            }
            return(storage);
        }
示例#25
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                width = ConvertUtility.ToInt32(Request.QueryString["w"]);
                if (width == 0)
                {
                    width = (int)Constant.DefaultScreen.Standard;
                }
                ltrWidth.Text = "<meta content=\"width=" + width.ToString() + "; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;\" name=\"viewport\" />";
                lang          = ConvertUtility.ToInt32(Request.QueryString["lang"]);
                if (lang == 0)
                {
                    ltrHoTro.Text    = "Ho tro: 19001255";
                    lnkDautrang.Text = "Dau trang <img src=\"img/dautrang.jpg\" style=\"border:0px\" />";
                }
            }

            plContent.Controls.Add(LoadControl("UserControl/List.ascx"));

            //vnmnumber = MobileUtils.GetMSISDN();

            //if (!string.IsNullOrEmpty(vnmnumber) && MobileUtils.CheckOperator(vnmnumber, "vietnammobile"))
            //{
            //    if (!WapController.W4A_Subscriber_IsActive(vnmnumber, 3))//3 là Hot 100
            //    {
            //        plThongbao.Controls.Add(LoadControl("UserControl/Thongbao.ascx"));
            //    }
            //}
            //else plThongbao.Controls.Add(LoadControl("UserControl/Thongbao.ascx"));

            IPList iplist = new IPList();

            iplist.Add("202.172.4.192", 26);
            iplist.Add("203.170.26.0", 24);
            iplist.Add("203.170.27.0", 24);
            iplist.Add("203.128.247.24", 30);
            iplist.Add("203.162.40.20", 30);

            if (!iplist.CheckNumber(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
            {
                plThongbao.Controls.Add(LoadControl("UserControl/Thongbao.ascx"));
            }
        }
示例#26
0
        protected void Page_Load(object sender, EventArgs e)
        {
            lang = ConvertUtility.ToInt32(Request.QueryString["lang"]);
            if (!string.IsNullOrEmpty(Request.QueryString["cpage"]))
            {
                curpage = ConvertUtility.ToInt32(Request.QueryString["cpage"]);
            }

            int is3g = 0;
            //string msisdn = MobileUtils.GetMSISDN(out is3g);

            string vnmnumber = MobileUtils.GetMSISDN(out is3g);

            IPList iplist = new IPList();

            iplist.Add("202.172.4.192", 26);
            iplist.Add("203.170.26.0", 24);
            iplist.Add("203.170.27.0", 24);
            iplist.Add("203.128.247.24", 30);
            iplist.Add("203.162.40.20", 30);
            if (iplist.CheckNumber(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
            {
                showDL = true;
            }

            //if (!string.IsNullOrEmpty(vnmnumber) && MobileUtils.CheckOperator(vnmnumber, "vietnammobile") && (iplist.CheckNumber(HttpContext.Current.Request.UserHostAddress)))
            //    if (VietnamobileWap.Library.Component.Wap.WapController.W4A_Subscriber_IsActive(vnmnumber, 3)) showDL = true;

            //start category list
            int totalrecord = 0;
            //DataTable dtCat = RTController.GetAllRingToneByCategoryAndDisplayTypeHasCache(Session["telco"].ToString(),110, (int)Constant.RingTone.Hot100, pagesize, curpage, out totalrecord);
            DataTable dtCat = RTController.VNM_GetAllRingToneByCategoryAndDisplayTypeHasCache(110, (int)Constant.RingTone.Hot100, pagesize, curpage, out totalrecord);

            rptlstCategory.DataSource     = dtCat;
            rptlstCategory.ItemDataBound += new RepeaterItemEventHandler(rptlstCategory_ItemDataBound);
            rptlstCategory.DataBind();
            Pagging1.totalrecord  = totalrecord;
            Pagging1.pagesize     = pagesize;
            Pagging1.numberpage   = pagenumber;
            Pagging1.defaultparam = "?lang=" + Request.QueryString["lang"];
            Pagging1.queryparam   = "?lang=" + Request.QueryString["lang"] + "&cpage=";
            //end category list
        }
示例#27
0
        public ZCRelaySocket()
        {
            ReceiveDataArray = new byte[200];
            IPList ZCiplist = IPConfigure.IPList.Find((IPList iplist) => { return(iplist.DeviceName == "ZCToATSAndCI"); });

            ZCIP   = ZCiplist.IP;
            ZCPort = ZCiplist.Port;
            IPList ipandport = IPConfigure.IPList.Find((IPList iplist) => { return(iplist.DeviceName == "ZCToATP"); });

            HostIP   = ipandport.IP;
            HostPort = ipandport.Port;

            IPEndPoint IPEP = new IPEndPoint(HostIP, HostPort);
            EndPoint   EP   = (EndPoint)IPEP;

            socketMain = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            socketMain.Bind(EP);
            CancelReceiveException();
        }
示例#28
0
        public static Complex buildObj()
        {
            IPList ipList_1 = new IPList();
            ipList_1.list1.Add("10.2.2.1");
            ipList_1.list1.Add("127.0.0.1");
            ipList_1.list1.Add("129.36.58.15");

            ipList_1.list2.Add("2001:db8::ff00:1:8329");
            ipList_1.list2.Add("ff:ac:12::5f");
            ipList_1.list2.Add("1::");

            IPList ipList_2 = new IPList();
            ipList_2.list1.Add("100.20.20.10");
            ipList_2.list1.Add("17.10.10.1");
            ipList_2.list1.Add("12.36.68.105");

            ipList_2.list2.Add("ff:fabf:faf:f15f:f1ff:f2f:1f:f2");
            ipList_2.list2.Add("2001:db8::ff00:1:8329");
            ipList_2.list2.Add("::1");

                List<IPList> tmp1 = new List<IPList>();
            tmp1.Add(ipList_1);
            tmp1.Add(ipList_2);

                List<IPList> tmp2 = new List<IPList>();
            tmp2.Add(ipList_2);
            tmp2.Add(ipList_1);

            Dictionary<string, List<IPList>> dict1 = new Dictionary<string, List<IPList>>();
            dict1.Add("AA", tmp1);

            Dictionary<string, List<IPList>> dict2 = new Dictionary<string, List<IPList>>();
            dict2.Add("BB", tmp2);

            Complex com = new Complex();
            com.list1.Add(dict1);
            com.list1.Add(dict2);

            return com;
        }
示例#29
0
 public void AddToList(string list, IPAddr ip)
 {
     try
     {
         LockCookie upgrade  = new LockCookie();
         bool       upgraded = false;
         if (locker.IsReaderLockHeld)
         {
             upgrade  = locker.UpgradeToWriterLock(new TimeSpan(0, 1, 0));
             upgraded = true;
         }
         else
         {
             locker.AcquireWriterLock(new TimeSpan(0, 1, 0));
         }
         try
         {
             if (!iplists.ContainsKey(list))
             {
                 iplists[list] = new IPList();
             }
             iplists[list].Add(ip);
         }
         finally
         {
             if (upgraded)
             {
                 locker.DowngradeFromWriterLock(ref upgrade);
             }
             else
             {
                 locker.ReleaseWriterLock();
             }
         }
     }
     catch (ApplicationException a)
     {
         Logging.LogCenter.Instance.LogException(a);
     }
 }
示例#30
0
        public JsonResult AddIPMasks(string Single_IP, string Cidr_IP, string Sub_IP, string Sub_Subnet, string Start_IP, string End_IP, bool IP_Allowed)
        {
            ExceptionsML bizEx;
            var          client = SvcBldr.Company();

            IPList l = new IPList();

            if (!String.IsNullOrEmpty(Single_IP))
            {
                l.Add(Single_IP);
            }
            if (!String.IsNullOrEmpty(Cidr_IP))
            {
                var parts = Cidr_IP.Split(new char[] { '/' });
                l.Add(parts[0], int.Parse(parts[1]));
            }
            if (!String.IsNullOrEmpty(Sub_IP) && !String.IsNullOrEmpty(Sub_Subnet))
            {
                l.Add(Sub_IP, Sub_Subnet);
            }
            if (!String.IsNullOrEmpty(Start_IP) && !String.IsNullOrEmpty(End_IP))
            {
                l.AddRange(Start_IP, End_IP);
            }

            foreach (var item in l.GetRanges())
            {
                var mask = new CompanyIPMaskDTO()
                {
                    IPMask = item.Key, SubnetMask = item.Value, Allowed = IP_Allowed
                };
                client.SetIPMask(mask, out bizEx);
                if (bizEx != null)
                {
                    return(Result(null, bizEx));
                }
            }
            return(GetIPMasks());
        }
        public FliterWindowViewModel(MainWindowViewModel dataContext)
        {
            refreshMessage = (date) => dataContext.TcpPacket = date;

            ErrorList = from iteam
                        in dataContext.HttpList
                        where iteam.ErrorCode == ErrorCode.RESPONSE_ERROR || iteam.ErrorCode == ErrorCode.NET_NO_RESPONSE
                        select iteam;

            WarningList = from iteam
                          in dataContext.HttpList
                          where iteam.ErrorCode == ErrorCode.NET_TIMEOUT || iteam.ErrorCode == ErrorCode.HTTP_ERROR
                          select iteam;

            Dictionary <string, List <HttpModel> > mp = new Dictionary <string, List <HttpModel> >();

            IPList.Clear();
            foreach (var item in ErrorList)
            {
                if (!mp.ContainsKey(item.IP_DestinationAddress))
                {
                    List <HttpModel> newlist = new List <HttpModel>();
                    newlist.Add(item);
                    mp.Add(item.IP_DestinationAddress, newlist);
                }
                else
                {
                    List <HttpModel> oldlist;
                    mp.TryGetValue(item.IP_DestinationAddress, out oldlist);
                    oldlist.Add(item);
                }
            }

            foreach (var key in mp.Keys)
            {
                IPList.Add(key);
            }
        }
示例#32
0
        public void AddWithMask_ShouldWork()
        {
            var iplist = new IPList();

            iplist.Add("172.16.1.15", "255.255.255.0");
            iplist.CheckNumber("172.16.1.1").ShouldBeTrue();
            iplist.CheckNumber("172.16.1.255").ShouldBeTrue();
            iplist.CheckNumber("172.16.2.1").ShouldBeFalse();

            iplist = new IPList();
            iplist.Add("172.16.0.15", "255.255.0.0");
            iplist.CheckNumber("172.16.1.1").ShouldBeTrue();
            iplist.CheckNumber("172.16.255.255").ShouldBeTrue();
            iplist.CheckNumber("172.15.1.1").ShouldBeFalse();

            iplist = new IPList();
            iplist.Add("172.0.0.0", "255.0.0.0");
            iplist.CheckNumber("172.1.1.1").ShouldBeTrue();
            iplist.CheckNumber("172.255.1.1").ShouldBeTrue();
            iplist.CheckNumber("173.1.1.1").ShouldBeFalse();

            iplist = new IPList();
            iplist.Add("1.0.0.0", "255.0.0.0");
            iplist.CheckNumber("1.0.0.0").ShouldBeTrue();
            iplist.CheckNumber("1.255.255.255").ShouldBeTrue();
            iplist.CheckNumber("2.0.0.0").ShouldBeFalse();

            // ks 6/19/14 - I don't understand how this part works - it seems like "0.0.0.0/0.0.0.0" should specify
            // the entire address range, but it doesn't. Oh well.
            //iplist = new IPList();
            //iplist.Add("0.0.0.0", "0.0.0.0");
            //iplist.CheckNumber("1.0.0.0").ShouldBeTrue();
            //iplist.CheckNumber("1.255.255.255").ShouldBeTrue();
            //iplist.CheckNumber("2.0.0.0").ShouldBeTrue();
            //iplist.CheckNumber("127.0.0.1").ShouldBeTrue();
        }
        public void AuthorizeEvent(ref WMS_EVENT pEvent, IWMSContext pUserCtx, IWMSContext pPresentationCtx, IWMSCommandContext pCommandCtx,
            IWMSEventAuthorizationCallback pCallback,
            object Context)
        {
            int hr = 0; // By deafault access is granted to user
            const int ACCESS_DENIED = unchecked((int)0x80070005);

            string user_ip_address = null;
            pUserCtx.GetStringValue(WMSDefines.WMS_USER_IP_ADDRESS_STRING,
                                    WMSDefines.WMS_USER_IP_ADDRESS_STRING_ID,
                                    out user_ip_address,
                                    0);

            try
            {
                DateTime lastWrite = System.IO.File.GetLastWriteTime(denylistname);

                if (denyList == null)
                {
                    denyList = IPListLoader.loadIpList(denylistname);
                    lastWriteTime = lastWrite;
                }
                else if (lastWriteTime.Ticks != lastWrite.Ticks)
                {
                    denyList = IPListLoader.loadIpList(denylistname);
                    lastWriteTime = lastWrite;
                }

                if (denyList.CheckNumber(user_ip_address))
                {
                    hr = ACCESS_DENIED;
                }
            }
            catch (Exception e) { }

            pCallback.OnAuthorizeEvent(hr, Context);
        }
示例#34
0
 public void AddToList(string list, IPAddr ip)
 {
     try
     {
         LockCookie upgrade = new LockCookie();
         bool upgraded = false;
         if (locker.IsReaderLockHeld)
         {
             upgrade = locker.UpgradeToWriterLock(new TimeSpan(0, 1, 0));
             upgraded = true;
         }
         else
             locker.AcquireWriterLock(new TimeSpan(0, 1, 0));
         try
         {
             if (!iplists.ContainsKey(list))
             {
                 iplists[list] = new IPList();
             }
             iplists[list].Add(ip);
         }
         finally
         {
             if (upgraded)
                 locker.DowngradeFromWriterLock(ref upgrade);
             else
                 locker.ReleaseWriterLock();
         }
     }
     catch (ApplicationException a)
     {
         Logging.LogCenter.Instance.LogException(a);
     }
 }