Example #1
0
        /// <summary>
        /// Tries to lookup the location by ip/dns name. Returns null if no match could be made
        /// </summary>
        public GeoEntity Lookup(string address)
        {
            if (Status != ControlStatus.Active || address.IsNullOrWhiteSpace())
            {
                return(null);
            }


            var ip = address;//todo add DNS lookup

            var            key   = ip;
            var            pad   = string.Empty;
            IPAddressBlock block = null;

            while (true)
            {
                if (m_Blocks.TryGetValue(key + pad, out block))
                {
                    break;
                }

                var id = key.LastIndexOf('.');
                if (id > 0)
                {
                    key  = key.Substring(0, id);
                    pad += ".0";
                }
                else
                {
                    return(null);
                }
            }

            return(new GeoEntity(address, block, LookupLocation(block.LocationID)));
        }
Example #2
0
        /// <summary>
        /// Tries to lookup the location by ip/dns name. Returns null if no match could be made
        /// </summary>
        public GeoEntity Lookup(IPAddress address)
        {
            if (Status != ControlStatus.Active || address == null)
            {
                return(null);
            }


            var ip = address;//todo add DNS lookup

            var            key   = ip;
            var            pad   = string.Empty;
            IPAddressBlock block = null;

            //todo Implement!!!!!!!
            //while(true)
            //{
            //  if (m_Blocks.TryGetValue(key+pad, out block)) break;

            //  var id = key.LastIndexOf('.');
            //  if (id>0)
            //  {
            //    key = key.Substring(0, id);
            //    pad+=".0";
            //  }
            //  else
            //    return null;
            //}

            return(null);//new GeoEntity(address, block, LookupLocation(block.LocationID));
        }
Example #3
0
        private IPAddressBlock parseBlock(string data)
        {
            var row = new IPAddressBlock();

            if (data.IsNullOrWhiteSpace())
            {
                return(row);
            }

            var i  = 0;
            var fc = row.Schema.FieldCount;

            foreach (var seg in parseCSVLine(data))
            {
                if (i == fc)
                {
                    break;
                }

                var v = seg;
                if (i == 0)
                {
                    if (v.StartsWith("::ffff:"))
                    {
                        v = v.Substring("::ffff:".Length);
                    }
                }

                if (row.Schema[i].Type == typeof(Boolean))
                {
                    v = v == "1"?"true":"false";
                }
                try
                {
                    row[i] = v;
                }
                catch (Exception error)
                {
                    throw new GeoException("Block {0}.{1}[{2}] = '{3}' error: {4} ".Args(
                                               row.Schema.Name,
                                               row.Schema[i].Name,
                                               i,
                                               v,
                                               error.ToMessageWithType()), error);
                }
                i++;
            }
            return(row);
        }
Example #4
0
        private IPAddressBlock parseBlock(string data)
        {
            var row = new IPAddressBlock();

            if (data.IsNullOrWhiteSpace())
            {
                return(row);
            }

            var i  = 0;
            var fc = row.Schema.FieldCount;

            foreach (var seg in parseCSVLine(data))
            {
                if (i == fc)
                {
                    break;
                }

                var v = seg;
                if (i == 0)
                {
                    if (v.StartsWith("::ffff:"))
                    {
                        v = v.Substring("::ffff:".Length);
                    }
                }

                if (row.Schema[i].Type == typeof(Boolean))
                {
                    v = v == "1"?"true":"false";
                }
                row[i] = v;
                i++;
            }
            return(row);
        }
Example #5
0
 protected internal GeoEntity(IPAddress query, IPAddressBlock block, Location location)
 {
     Query    = query;
     Block    = block;
     Location = location;
 }
Example #6
0
 protected internal GeoEntity(string query, IPAddressBlock block, Location location)
 {
   Query = query;
   Block = block;
   Location = location;
 }
Example #7
0
      private IPAddressBlock parseBlock(string data)
      {
        var row = new IPAddressBlock();
        if (data.IsNullOrWhiteSpace()) return row;

        var i = 0;
        var fc = row.Schema.FieldCount;
        foreach(var seg in parseCSVLine(data))
        {
          if (i==fc) break;
          
          var v = seg;
          if (i==0)
          {
            if (v.StartsWith("::ffff:")) 
              v = v.Substring("::ffff:".Length);
          }  

          if (row.Schema[i].Type==typeof(Boolean)) v = v=="1"?"true":"false";
          try
          {
            row[i] = v;
          }
          catch(Exception error)
          {
            throw new GeoException("Block {0}.{1}[{2}] = '{3}' error: {4} ".Args(
                                   row.Schema.Name,
                                   row.Schema[i].Name,
                                   i,
                                   v,
                                   error.ToMessageWithType()), error); 
          }
          i++;
        }
        return row;
      }
Example #8
0
      private IPAddressBlock parseBlock(string data)
      {
        var row = new IPAddressBlock();
        if (data.IsNullOrWhiteSpace()) return row;

        var i = 0;
        var fc = row.Schema.FieldCount;
        foreach(var seg in parseCSVLine(data))
        {
          if (i==fc) break;
          
          var v = seg;
          if (i==0)
          {
            if (v.StartsWith("::ffff:")) 
              v = v.Substring("::ffff:".Length);
          }  

          if (row.Schema[i].Type==typeof(Boolean)) v = v=="1"?"true":"false";
          row[i] = v;
          i++;
        }
        return row;
      }