private void DebugPrepareUDPTest() { var ipaddress = IPAddress.Parse("80.83.66.2"); var addrbytes = ipaddress.GetAddressBytes().Reverse().ToArray(); var addr = new Models.Int128(); if (addrbytes.Length == 4) { addr.Hi = 0; addr.Low = BitConverter.ToUInt32(addrbytes, 0); } var addresstext = new BigMath.Int128(addr.Hi, addr.Low).ToString(); var addbytes2 = ASCIIEncoding.ASCII.GetBytes(addresstext); var item = new Models.CacheIPRange() { Created = DateTime.UtcNow, Identity = "identity1", Proto_IpFrom = addbytes2, Proto_IpTo = addbytes2, PolicyId = 0 }; CacheLiveStorage.UdpCache = new System.Collections.Concurrent.ConcurrentDictionary <string, Models.CacheIPRange>(); CacheLiveStorage.UdpCache.AddOrUpdate("stationid1", item, (key, oldValue) => item); }
private static void ProcessResult(byte[] receivedResult) { try { var receivedPacket = new FP.Radius.RadiusPacket(receivedResult); if (receivedPacket.Valid) { var ipaddress = receivedPacket.Attributes.Where(t => t.Type == FP.Radius.RadiusAttributeType.FRAMED_IP_ADDRESS).First().Value; var calledstationid = ASCIIEncoding.ASCII.GetString(receivedPacket.Attributes.Where(t => t.Type == FP.Radius.RadiusAttributeType.CALLED_STATION_ID).First().Data); var addrbytes = IPAddress.Parse(ipaddress).GetAddressBytes(); var addr = new Models.Int128(); if (addrbytes.Length == 4) { addr.Hi = 0; addr.Low = BitConverter.ToUInt32(addrbytes, 0); } else if (addrbytes.Length == 16) { addr.Hi = BitConverter.ToUInt64(addrbytes, 0); addr.Low = BitConverter.ToUInt64(addrbytes, 8); } var addresstext = new BigMath.Int128(addr.Hi, addr.Low).ToString(); var addbytes2 = ASCIIEncoding.ASCII.GetBytes(addresstext); var policyid = 0; if (CacheLiveStorage.CoreCache.CustomLists != null) { var matchingCustomList = CacheLiveStorage.CoreCache.CustomLists.Where(t => string.Compare(t.Identity, calledstationid, StringComparison.OrdinalIgnoreCase) == 0).FirstOrDefault(); policyid = (matchingCustomList == null) ? 0 : matchingCustomList.PolicyId; } var item = new Models.CacheIPRange() { Created = DateTime.UtcNow, Identity = calledstationid, Proto_IpFrom = addbytes2, Proto_IpTo = addbytes2, PolicyId = policyid }; CacheLiveStorage.UdpCache.AddOrUpdate(calledstationid, item, (key, oldValue) => item); log.Info($"Processed {ipaddress} for {calledstationid}."); } else { log.Info("Unable to process UDP packet."); } } catch (Exception ex) { log.Error(ex); } }
private static List <Models.CacheIPRange> LoadIPRanges() { var result = new List <Models.CacheIPRange>(); var csv = new CsvHelper.CsvReader(File.OpenText("ranges.csv")); while (csv.Read()) { var ipfrom = csv.GetField(0); IPAddress ipaddrfrom; if (!IPAddress.TryParse(ipfrom, out ipaddrfrom)) { break; } var ipto = csv.GetField(1); IPAddress ipaddrto; if (!IPAddress.TryParse(ipfrom, out ipaddrto)) { break; } var fromlist = ipaddrfrom.GetAddressBytes().ToList(); var tolist = ipaddrto.GetAddressBytes().ToList(); BigMath.Int128 outFrom; BigMath.Int128 outTo; if (fromlist.Count == 4) { outFrom = new BigMath.Int128(BitConverter.ToUInt32(fromlist.Take(4).ToArray(), 0)); outTo = new BigMath.Int128(BitConverter.ToUInt32(tolist.Take(4).ToArray(), 0)); } else { outFrom = new BigMath.Int128(BitConverter.ToUInt64(tolist.Take(8).ToArray(), 0), BitConverter.ToUInt64(fromlist.Skip(8).Take(8).ToArray(), 0)); outTo = new BigMath.Int128(BitConverter.ToUInt64(tolist.Take(8).ToArray(), 0), BitConverter.ToUInt64(tolist.Take(8).ToArray(), 0)); } var item = new Models.CacheIPRange { IpFrom = Kres.Man.Models.Int128.Convert(outFrom), IpTo = Kres.Man.Models.Int128.Convert(outTo), Identity = csv.GetField(2), PolicyId = Convert.ToInt32(csv.GetField(3)) }; result.Add(item); } return(result); }