/// <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))); }
/// <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)); }
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); }
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); }
protected internal GeoEntity(IPAddress query, IPAddressBlock block, Location location) { Query = query; Block = block; Location = location; }
protected internal GeoEntity(string query, IPAddressBlock block, Location location) { Query = query; Block = block; Location = location; }
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; }
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; }