private static void ShowPropertiesNodes_InAdapter(NetworkInterface adapter) { Console.WriteLine("\nScanning from " + adapter.Description); Console.WriteLine("Name: " + adapter.Name); Console.WriteLine("========================================================="); //Console.WriteLine(adapter.Id); Console.WriteLine("-------------------------Nodes---------------------------"); IPRange ipRange = GetIPRange(adapter); List <uint> allIP = new List <uint>(); for (uint ip = ipRange.First; ip < ipRange.Last; IncrementIP(ref ip)) { allIP.Add(ip); } Console.WriteLine($" IP: MAC address: Vendor:"); Parallel.ForEach(allIP, ip => { IPAddress ipCurrent = new IPAddress(ip); string macLine = GetMacByIP((int)ip, (int)ipRange.Local); try { if (macLine != null) { Console.WriteLine($"{ipCurrent,15} {macLine,20} {LookupMac(macLine).Result,20}"); } } catch (System.AggregateException exAgg) { Console.WriteLine(exAgg); } }); }
private async Task DeleteIPRange(IPRange ipRange) { var subnets = _vnet.Subnets.Where(s => s.IPRangeId == ipRange.Id).ToList(); if (subnets?.Count > 0) { var content = "Delete the address range will remove all relative subnets!"; var title = "Warning"; var confirmResult = await _confirmService.Show(content, title, ConfirmButtons.OKCancel, ConfirmIcon.Warning, new ConfirmButtonOptions() { Button1Props = new ButtonProps() { Type = "primary", Danger = true } }); if (confirmResult == ConfirmResult.Cancel) { return; } } // TODO: an exception is thown when deleting the last element. _vnet.DeleteIpRange(ipRange); }
private IChannel CreateChannel(string channelName, ChannelEncodingType channelType, StreamingProtocol ingestProtocol) { ChannelCreationOptions creationOptions = new ChannelCreationOptions(); creationOptions.Name = channelName; creationOptions.EncodingType = channelType; IPRange allAddresses = new IPRange(); allAddresses.Address = new IPAddress(0); allAddresses.Name = Constants.Media.Stream.AddressRangeAll; allAddresses.SubnetPrefixLength = 0; creationOptions.Input = new ChannelInput(); creationOptions.Input.AccessControl = new ChannelAccessControl(); creationOptions.Input.AccessControl.IPAllowList = new List <IPRange>(); creationOptions.Input.AccessControl.IPAllowList.Add(allAddresses); creationOptions.Input.StreamingProtocol = ingestProtocol; creationOptions.Preview = new ChannelPreview(); creationOptions.Preview.AccessControl = new ChannelAccessControl(); creationOptions.Preview.AccessControl.IPAllowList = new List <IPRange>(); creationOptions.Preview.AccessControl.IPAllowList.Add(allAddresses); IChannel channel = _media.Channels.Create(creationOptions); CreateProgram(channel); return(channel); }
public IPUtils(string filePath) { //Create User object. IPRange ir = new IPRange(); FileStream fileStream = new FileStream(filePath, FileMode.Open); StreamReader sr = new StreamReader(fileStream); string str = ""; while ((str = sr.ReadLine()) != null) { if (str[0] != '#') { IPRange obj = JsonConvert.DeserializeObject <IPRange>(str); if (list.Count == 0) { list.Add(obj); continue; } IPRange lastObj = list[list.Count - 1]; if (lastObj.ipto == obj.ipfrom - 1 && lastObj.cntcy == obj.cntcy && lastObj.ctry == obj.ctry && lastObj.country == obj.country) { list[list.Count - 1].ipto = obj.ipto; //Console.WriteLine($"list[list.Count - 1] = {list[list.Count - 1]} lastObj = {lastObj}"); } else { list.Add(obj); } } } }
public void GetNetwork(string from, string to, string expectedNetwork) { var fromIp = IPAddress.Parse(from); var toIp = IPAddress.Parse(to); var network = new IPRange(fromIp, toIp).GetNetwork(); Assert.Equal(expectedNetwork, network.ToUpperInvariant()); }
public void Overlaps_true(string from1, string to1, string from2, string to2) { var ipRange1 = new IPRange(IPAddress.Parse(from1), IPAddress.Parse(to1)); var ipRange2 = new IPRange(IPAddress.Parse(from2), IPAddress.Parse(to2)); Assert.Equal(true, ipRange1.Overlaps(ipRange2)); }
public void QueueUriBuilder_IPStyleUrl_SasTest() { // Arrange var uriString = "https://127.0.0.1/account/queue?sv=2015-04-05&spr=https&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sip=168.1.5.60-168.1.5.70&sr=b&sp=rw&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D"; var originalUri = new UriBuilder(uriString); // Act var queueUriBuilder = new QueueUriBuilder(originalUri.Uri); var newUri = queueUriBuilder.ToUri(); // Assert Assert.AreEqual("https", queueUriBuilder.Scheme); Assert.AreEqual("127.0.0.1", queueUriBuilder.Host); Assert.AreEqual(443, queueUriBuilder.Port); Assert.AreEqual("account", queueUriBuilder.AccountName); Assert.AreEqual("queue", queueUriBuilder.QueueName); Assert.IsFalse(queueUriBuilder.Messages); Assert.AreEqual("", queueUriBuilder.MessageId); Assert.AreEqual(new DateTimeOffset(2015, 4, 30, 2, 23, 26, TimeSpan.Zero), queueUriBuilder.Sas.ExpiryTime); Assert.AreEqual("", queueUriBuilder.Sas.Identifier); Assert.AreEqual(IPRange.Parse("168.1.5.60-168.1.5.70"), queueUriBuilder.Sas.IPRange); Assert.AreEqual("rw", queueUriBuilder.Sas.Permissions); Assert.AreEqual(SasProtocol.Https, queueUriBuilder.Sas.Protocol); Assert.AreEqual("b", queueUriBuilder.Sas.Resource); Assert.AreEqual("", queueUriBuilder.Sas.ResourceTypes); Assert.AreEqual("", queueUriBuilder.Sas.Services); Assert.AreEqual("Z/RHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk=", queueUriBuilder.Sas.Signature); Assert.AreEqual(new DateTimeOffset(2015, 4, 29, 22, 18, 26, TimeSpan.Zero), queueUriBuilder.Sas.StartTime); Assert.AreEqual("2015-04-05", queueUriBuilder.Sas.Version); Assert.AreEqual("", queueUriBuilder.UnparsedParams); Assert.AreEqual(originalUri, newUri); }
private static IPRange[] GetAllLocalIPAddresses() { List <IPRange> list = new List <IPRange>(); try { NetworkInterface[] allNetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface networkInterface in from a in allNetworkInterfaces where a.OperationalStatus == OperationalStatus.Up select a) { IPInterfaceProperties ipproperties = networkInterface.GetIPProperties(); UnicastIPAddressInformationCollection unicastAddresses = ipproperties.UnicastAddresses; foreach (IPAddressInformation ipaddressInformation in unicastAddresses.OrderBy((UnicastIPAddressInformation ua) => ua.Address.AddressFamily)) { if (!ipaddressInformation.IsTransient) { if (ipaddressInformation.Address.AddressFamily == AddressFamily.InterNetwork) { list.Add(IPRange.Parse(ipaddressInformation.Address.ToString())); } else if (ipaddressInformation.Address.AddressFamily == AddressFamily.InterNetworkV6) { list.Add(IPRange.Parse(ipaddressInformation.Address.ToString())); } } } } } catch (NetworkInformationException ex) { ExTraceGlobals.ClientAccessRulesTracer.TraceDebug(0L, string.Format("[Client Access Rules] GetAllLocalIPAddresses threw an unexpected exception ({0})", ex.ToString())); } return(list.Distinct <IPRange>().ToArray <IPRange>()); }
public void OnlyUpdateIfDocumentChanges_TrueInDatabase() { // Arrange var ipRange = new IPRange { AwsProfileId = _profileId, Cidr = "255.255.255.10/30", Addresses = new Dictionary <string, SubnetIpAddress> { { "255.255.255.8", new SubnetIpAddress { Address = IPAddress.Parse("255.255.255.8"), IsInUse = true } } } }; IPRangeRepositoryMock.Setup(x => x.FindAll()).Returns(new List <IPRange> { ipRange }); // Act Command.Execute(_profileId); // Assert IPRangeRepositoryMock.Verify(x => x.Update(ipRange), Times.Never); }
/// <summary> /// Use an account's <see cref="StorageSharedKeyCredential"/> to sign this /// shared access signature values to produce the proper SAS query /// parameters for authenticating requests. /// </summary> /// <param name="sharedKeyCredential"> /// The storage account's <see cref="StorageSharedKeyCredential"/>. /// </param> /// <returns> /// The <see cref="DataLakeSasQueryParameters"/> used for authenticating /// requests. /// </returns> public DataLakeSasQueryParameters ToSasQueryParameters(StorageSharedKeyCredential sharedKeyCredential) { sharedKeyCredential = sharedKeyCredential ?? throw Errors.ArgumentNull(nameof(sharedKeyCredential)); EnsureState(); var startTime = SasQueryParameters.FormatTimesForSasSigning(StartsOn); var expiryTime = SasQueryParameters.FormatTimesForSasSigning(ExpiresOn); // See http://msdn.microsoft.com/en-us/library/azure/dn140255.aspx var stringToSign = String.Join("\n", Permissions, startTime, expiryTime, GetCanonicalName(sharedKeyCredential.AccountName, FileSystemName ?? String.Empty, Path ?? String.Empty), Identifier, IPRange.ToString(), Protocol.ToProtocolString(), Version, Resource, null, // snapshot CacheControl, ContentDisposition, ContentEncoding, ContentLanguage, ContentType); var signature = sharedKeyCredential.ComputeHMACSHA256(stringToSign); var p = new DataLakeSasQueryParameters( version: Version, services: default,
static void Main(string[] args) { IPRange ipRange = new IPRange(); ipRange.Parse("192.168.0.12/24"); var ipList = ipRange.GetAllIpAddresses(); var ipRangeList25 = ipRange.GetSmallerRanges(25); var ipRangeList26 = ipRange.GetSmallerRanges(26); var ipRangeList27 = ipRange.GetSmallerRanges(27); foreach (var item in ipRangeList25) { var v1 = item.GetAllIpAddresses(); var v2 = v1; } foreach (var item in ipRangeList26) { var v1 = item.GetAllIpAddresses(); var v2 = v1; } foreach (var item in ipRangeList27) { var v1 = item.GetAllIpAddresses(); var v2 = v1; } var x = ipList; //var ipList2 = IPAddressRange.Parse("192.168.0.12/25"); //var y = ipList2; }
public Location GetLocationsByIP(ulong ip) { if (!_db.Ranges.Any()) { return(null); } var first = 0; int last = _db.Ranges.Count; while (first <= last) { int mid = first + (last - first) / 2; IPRange midRange = _db.Ranges.ElementAt(mid); if (ip >= midRange.IpFrom && ip <= midRange.IpTo) { //this cast is ok in current requirements return(_db.Locations.ElementAt((int)midRange.Index)); } if (ip < midRange.IpFrom) { last = mid - 1; } else { first = mid + 1; } } return(null); }
/// <summary> /// Use an account's <see cref="TableSharedKeyCredential"/> to sign this /// shared access signature values to produce the proper SAS query /// parameters for authenticating requests. /// </summary> /// <param name="sharedKeyCredential"> /// The storage account's <see cref="TableSharedKeyCredential"/>. /// </param> /// <returns> /// An instance of <see cref="TableSasQueryParameters"/>. /// </returns> public TableSasQueryParameters ToSasQueryParameters(TableSharedKeyCredential sharedKeyCredential) { sharedKeyCredential = sharedKeyCredential ?? throw Errors.ArgumentNull(nameof(sharedKeyCredential)); EnsureState(); var startTime = TableSasExtensions.FormatTimesForSasSigning(StartsOn); var expiryTime = TableSasExtensions.FormatTimesForSasSigning(ExpiresOn); // String to sign: http://msdn.microsoft.com/en-us/library/azure/dn140255.aspx var stringToSign = string.Join("\n", Permissions, startTime, expiryTime, GetCanonicalName(sharedKeyCredential.AccountName, TableName), Identifier, IPRange.ToString(), TableSasExtensions.ToProtocolString(Protocol), Version, PartitionKeyStart, RowKeyStart, PartitionKeyEnd, RowKeyEnd); var signature = TableSharedKeyCredential.ComputeSasSignature(sharedKeyCredential, stringToSign); var p = new TableSasQueryParameters( version: Version, resourceTypes: default,
internal static void ValidateSenderIPAddressRestrictions(MultiValuedProperty <IPRange> addressRanges, MultiValuedProperty <IPRange> ffoDCIPs, MultiValuedProperty <ServiceProviderSettings> serviceProviders, Task task) { if (MultiValuedPropertyBase.IsNullOrEmpty(addressRanges)) { return; } using (MultiValuedProperty <IPRange> .Enumerator enumerator = addressRanges.GetEnumerator()) { while (enumerator.MoveNext()) { IPRange ipRange = enumerator.Current; if (!MultiValuedPropertyBase.IsNullOrEmpty(ffoDCIPs)) { if (ffoDCIPs.Any((IPRange ffoDCIP) => ffoDCIP.Overlaps(ipRange))) { task.WriteError(new SenderIPAddressOverlapsFfoDCIPAddressesException(ipRange.Expression), ErrorCategory.InvalidArgument, null); } } if (!MultiValuedPropertyBase.IsNullOrEmpty(serviceProviders)) { if (serviceProviders.Any((ServiceProviderSettings serviceProvider) => serviceProvider.IPRanges != null && serviceProvider.IPRanges.Any((IPRange providerIPRange) => providerIPRange != null && providerIPRange.Overlaps(ipRange)))) { task.WriteError(new SenderIPAddressOverlapsServiceProviderIPAddressesException(ipRange.Expression), ErrorCategory.InvalidArgument, null); } } } } }
// ReSharper disable once ExcessiveIndentation public static IAddress[] StringToAddresses(string str) { var remoteAddresses = new List <IAddress>(); foreach (var remoteAddress in str.Split(',')) { if (SpecialAddress.TryParse(remoteAddress, out var specialAddress)) { remoteAddresses.Add(specialAddress); } else if (SingleIP.TryParse(remoteAddress, out SingleIP ip)) { remoteAddresses.Add(ip); } else if (IPRange.TryParse(remoteAddress, out var range)) { remoteAddresses.Add(range); } else if (NetworkAddress.TryParse(remoteAddress, out var network)) { remoteAddresses.Add(network); } } return(remoteAddresses.ToArray()); }
public void GetIPAddresses_CIDRRange_Succeeds() { IPRange range = new IPRange("192.168.0.0/24"); IEnumerable<IPAddress> ipAddresses = range.GetIPAddresses(); int actualCount = ipAddresses.Count(); Assert.IsTrue(actualCount == 256); }
public void FileUriBuilder_SasTest() { // Arrange var uriString = "https://account.file.core.windows.net/share?comp=list&sv=2015-04-05&spr=https&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sip=168.1.5.60-168.1.5.70&sr=b&sp=rw&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D"; var originalUri = new UriBuilder(uriString); // Act var fileUriBuilder = new FileUriBuilder(originalUri.Uri); var newUri = fileUriBuilder.ToUri(); // Assert Assert.AreEqual("https", fileUriBuilder.Scheme); Assert.AreEqual("account.file.core.windows.net", fileUriBuilder.Host); Assert.AreEqual(443, fileUriBuilder.Port); Assert.AreEqual("share", fileUriBuilder.ShareName); Assert.AreEqual("", fileUriBuilder.DirectoryOrFilePath); Assert.AreEqual("", fileUriBuilder.Snapshot); Assert.AreEqual(new DateTimeOffset(2015, 4, 30, 2, 23, 26, TimeSpan.Zero), fileUriBuilder.Sas.ExpiryTime); Assert.AreEqual("", fileUriBuilder.Sas.Identifier); Assert.AreEqual(IPRange.Parse("168.1.5.60-168.1.5.70"), fileUriBuilder.Sas.IPRange); Assert.AreEqual("rw", fileUriBuilder.Sas.Permissions); Assert.AreEqual(SasProtocol.Https, fileUriBuilder.Sas.Protocol); Assert.AreEqual("b", fileUriBuilder.Sas.Resource); Assert.AreEqual("", fileUriBuilder.Sas.ResourceTypes); Assert.AreEqual("", fileUriBuilder.Sas.Services); Assert.AreEqual("Z/RHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk=", fileUriBuilder.Sas.Signature); Assert.AreEqual(new DateTimeOffset(2015, 4, 29, 22, 18, 26, TimeSpan.Zero), fileUriBuilder.Sas.StartTime); Assert.AreEqual("2015-04-05", fileUriBuilder.Sas.Version); Assert.AreEqual("comp=list", fileUriBuilder.UnparsedParams); Assert.AreEqual(originalUri, newUri); }
public void Overlaps_false(string from1, string to1, string from2, string to2) { var ipRange1 = new IPRange(IPAddress.Parse(from1), IPAddress.Parse(to1)); var ipRange2 = new IPRange(IPAddress.Parse(from2), IPAddress.Parse(to2)); Assert.Equal(false, ipRange1.Overlaps(ipRange2)); }
public void BlobUriBuilder_RegularUrl_SasTest() { // Arrange var uriString = "https://account.core.blob.windows.net/container/blob?sv=2015-04-05&spr=https&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sip=168.1.5.60-168.1.5.70&sr=b&sp=rw&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D"; var originalUri = new UriBuilder(uriString); // Act var blobUriBuilder = new BlobUriBuilder(originalUri.Uri); Uri newUri = blobUriBuilder.ToUri(); // Assert Assert.AreEqual("https", blobUriBuilder.Scheme); Assert.AreEqual("account.core.blob.windows.net", blobUriBuilder.Host); Assert.AreEqual("", blobUriBuilder.AccountName); Assert.AreEqual("container", blobUriBuilder.BlobContainerName); Assert.AreEqual("blob", blobUriBuilder.BlobName); Assert.AreEqual("", blobUriBuilder.Snapshot); Assert.AreEqual(new DateTimeOffset(2015, 4, 30, 2, 23, 26, TimeSpan.Zero), blobUriBuilder.Sas.ExpiryTime); Assert.AreEqual("", blobUriBuilder.Sas.Identifier); Assert.AreEqual(IPRange.Parse("168.1.5.60-168.1.5.70"), blobUriBuilder.Sas.IPRange); Assert.AreEqual("rw", blobUriBuilder.Sas.Permissions); Assert.AreEqual(SasProtocol.Https, blobUriBuilder.Sas.Protocol); Assert.AreEqual("b", blobUriBuilder.Sas.Resource); Assert.AreEqual("", blobUriBuilder.Sas.ResourceTypes); Assert.AreEqual("", blobUriBuilder.Sas.Services); Assert.AreEqual("Z/RHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk=", blobUriBuilder.Sas.Signature); Assert.AreEqual(new DateTimeOffset(2015, 4, 29, 22, 18, 26, TimeSpan.Zero), blobUriBuilder.Sas.StartTime); Assert.AreEqual("2015-04-05", blobUriBuilder.Sas.Version); Assert.AreEqual("", blobUriBuilder.Query); Assert.AreEqual(443, blobUriBuilder.Port); Assert.AreEqual(originalUri, newUri); }
public void GetIPAddresses_CIDRRange_Succeeds() { IPRange range = new IPRange("192.168.0.0/24"); IEnumerable <IPAddress> ipAddresses = range.GetIPAddresses(); int actualCount = ipAddresses.Count(); Assert.IsTrue(actualCount == 256); }
internal bool Match(IPAddress iPAddress) { if (this.subnetIPRange == null || !this.subnetIPRange.LowerBound.Equals(this.IPAddress) || (this.subnetIPRange.RangeFormat == IPRange.Format.CIDR && (int)this.subnetIPRange.CIDRLength != this.MaskBits)) { this.subnetIPRange = IPRange.CreateIPAndCIDR(this.IPAddress, (short)this.MaskBits); } return(this.subnetIPRange.Contains(iPAddress)); }
public void Parse_SingleIP_FromToSame() { var ip = IPAddress.Parse("1.2.3.4"); var range = IPRange.Parse(ip.ToString()); Assert.Equal(ip, range.From); Assert.Equal(ip, range.To); }
/// <summary> /// Default constructor. /// </summary> /// <param name="pattern"></param> public AddressCondition(string pattern) { if (pattern == null) { throw new ArgumentNullException("pattern"); } _range = IPRange.Parse(pattern); }
/// <summary> /// Loads a IPfilter.dat. /// </summary> /// <returns> /// false = no file or the number of ranges /// </returns> /// <param name="path"> /// The path of the ipfilter.dat. /// </param> /// <param name="fileName"> /// The filename of the ipfilter.dat. /// </param> /// <param name="maxFilter"> /// The filter at loading, 255 = no filter. /// </param> public bool LoadIPFilter(string path, string fileName, byte maxFilter) { uint IPfrom; uint IPto; byte Filter; int count = 0; m_maxFilter = maxFilter; string fullpath = Path.Combine(path, fileName); if (File.Exists(fullpath)) { using (StreamReader sr = File.OpenText(fullpath)) { string s = ""; while ((s = sr.ReadLine()) != null) { //000.000.000.000 - 000.255.255.255 , 100 , LOW_ID (invalid) //ignore comments and short string try { if (s.Length < 18 || s[0] == '#' || s[0] == '/') { continue; } string [] splitString = s.Split(new Char [] { '-', ',', ',' }); Filter = Convert.ToByte(splitString[2]); if (Filter > m_maxFilter) { continue; } IPfrom = IPConvert(splitString[0]); IPto = IPConvert(splitString[1]); IPRange myIPRange = new IPRange(IPfrom, IPto, Filter, splitString[3]); m_IPFilterList.Add(myIPRange); count++; } catch (Exception e) { Debug.WriteLine(s + " : " + e.Message); } } } m_IPFilterList.Sort(new IPRangeSorter()); CLog.Log(Constants.Log.Info, "IP_FILTER_LOADED", count.ToString(), fileName); m_IsFilterDatExists = true; return(m_IsFilterDatExists); } else { m_IsFilterDatExists = false; return(m_IsFilterDatExists); } }
internal static void CheckSenderIpAddressesOverlap(IConfigDataProvider dataSession, TenantInboundConnector dataObject, Task task) { if (task == null || dataObject.SenderIPAddresses == null) { return; } TenantInboundConnector[] array = (TenantInboundConnector[])dataSession.Find <TenantInboundConnector>(null, null, true, null); List <string> list = null; List <string> list2 = null; using (MultiValuedProperty <IPRange> .Enumerator enumerator = dataObject.SenderIPAddresses.GetEnumerator()) { while (enumerator.MoveNext()) { IPRange ipRange = enumerator.Current; bool flag = false; foreach (TenantInboundConnector tenantInboundConnector in array) { if (tenantInboundConnector.Enabled && tenantInboundConnector.SenderIPAddresses != null && ((ADObjectId)tenantInboundConnector.Identity).ObjectGuid != ((ADObjectId)dataObject.Identity).ObjectGuid) { if (tenantInboundConnector.SenderIPAddresses.Any((IPRange exisingSenderIpRange) => exisingSenderIpRange.Overlaps(ipRange))) { if (list != null) { list.Add(tenantInboundConnector.Name); } else { list = new List <string> { tenantInboundConnector.Name }; } flag = true; } } } if (flag) { if (list2 != null) { list2.Add(ipRange.Expression); } else { list2 = new List <string> { ipRange.Expression }; } } } } if (list != null && list2 != null) { task.WriteWarning(Strings.SenderIPAddressOverlapsExistingTenantInboundConnectors(string.Join(", ", list2), string.Join(", ", list))); } }
public void Parse(string network, string from, string to) { var fromIp = IPAddress.Parse(from); var toIp = IPAddress.Parse(to); var range = IPRange.Parse(network); Assert.Equal(fromIp, range.From); Assert.Equal(toIp, range.To); }
public void Parse_FromLargerThanTo_ReverseFromAndTo() { var from = IPAddress.Parse("1.2.3.5"); var to = IPAddress.Parse("1.2.3.4"); var range = new IPRange(from, to); Assert.Equal(to, range.From); Assert.Equal(from, range.To); }
/// <summary> /// Default constructor. /// </summary> /// <param name="pattern"></param> public AddressCondition(string pattern) { if (pattern == null) { throw new ArgumentNullException(nameof(pattern)); } this._range = IPRange.Parse(pattern); }
private async Task StartIpBlur(IPRange ipRange) { bool validIp = IPAddress.TryParse(ipRange.StartIpHolder, out IPAddress ipAddress); if (!validIp) { ipRange.IpInvalidMessage = "Network IP address is not valid."; ipRange.HolderIpInvalid = !validIp; return; } // RFC1918 IPNetwork network1 = IPNetwork.Parse("10.0.0.0/8"); IPNetwork network2 = IPNetwork.Parse("172.16.0.0/12"); IPNetwork network3 = IPNetwork.Parse("192.168.0.0/16"); if (!network1.Contains(ipAddress) && !network2.Contains(ipAddress) && !network3.Contains(ipAddress)) { ipRange.IpInvalidMessage = $"Network IP address is not recommended. " + $"<a href=\"https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-faq#what-address-ranges-can-i-use-in-my-vnets\" target=\"_blank\">More info</a>"; ipRange.HolderIpInvalid = true; return; } ipRange.HolderIpInvalid = false; ipRange.IpInvalidMessage = string.Empty; var subnets = _vnet.Subnets.Where(s => s.IPRangeId == ipRange.Id).ToList(); if (subnets.Count > 0 && ipRange.StartIpHolder != ipRange.StartIP) { // Too complex to sort out new addresses for all subnets. So reset them. var content = "Chaning network IP will reset all its subnets!"; var title = "Warning"; var confirmResult = await _confirmService.Show(content, title, ConfirmButtons.OKCancel, ConfirmIcon.Warning, new ConfirmButtonOptions() { Button1Props = new ButtonProps() { Type = "primary", Danger = true } }); if (confirmResult == ConfirmResult.OK) { _vnet.SetVnetStartIp(ipRange.Id, ipRange.StartIpHolder); _vnet.ResetSubnets(ipRange.Id); } } else { _vnet.SetVnetStartIp(ipRange.Id, ipRange.StartIpHolder); } ipRange.StartIpHolder = ipRange.StartIP; }
/// <summary> /// Creates and initializes a SASQueryParameters object based on the /// query parameter map's passed-in values. If deleteSASParametersFromValues is true, /// all SAS-related query parameters are removed from the passed-in map. If /// deleteSASParametersFromValues is false, the map passed-in map is unaltered. /// </summary> /// <param name="values"></param> internal SasQueryParameters(UriQueryParamsCollection values) { // make copy, otherwise we'll get an exception when we remove IEnumerable <KeyValuePair <string, string> > kvps = values.ToArray();; foreach (var kv in kvps) { // these are already decoded var isSASKey = true; switch (kv.Key.ToUpperInvariant()) { case Constants.Sas.Parameters.VersionUpper: this.version = kv.Value; break; case Constants.Sas.Parameters.ServicesUpper: this.services = kv.Value; break; case Constants.Sas.Parameters.ResourceTypesUpper: this.resourceTypes = kv.Value; break; case Constants.Sas.Parameters.ProtocolUpper: this.protocol = SasProtocol.Parse(kv.Value); break; case Constants.Sas.Parameters.StartTimeUpper: this.startTime = DateTimeOffset.ParseExact(kv.Value, TimeFormat, CultureInfo.InvariantCulture); break; case Constants.Sas.Parameters.ExpiryTimeUpper: this.expiryTime = DateTimeOffset.ParseExact(kv.Value, TimeFormat, CultureInfo.InvariantCulture); break; case Constants.Sas.Parameters.IPRangeUpper: this.ipRange = IPRange.Parse(kv.Value); break; case Constants.Sas.Parameters.IdentifierUpper: this.identifier = kv.Value; break; case Constants.Sas.Parameters.ResourceUpper: this.resource = kv.Value; break; case Constants.Sas.Parameters.PermissionsUpper: this.permissions = kv.Value; break; case Constants.Sas.Parameters.SignatureUpper: this.signature = kv.Value; break; #if BlobSDK case Constants.Sas.Parameters.KeyOidUpper: this.keyOid = kv.Value; break; case Constants.Sas.Parameters.KeyTidUpper: this.keyTid = kv.Value; break; case Constants.Sas.Parameters.KeyStartUpper: this.keyStart = DateTimeOffset.ParseExact(kv.Value, TimeFormat, CultureInfo.InvariantCulture); break; case Constants.Sas.Parameters.KeyExpiryUpper: this.keyExpiry = DateTimeOffset.ParseExact(kv.Value, TimeFormat, CultureInfo.InvariantCulture); break; case Constants.Sas.Parameters.KeyServiceUpper: this.keyService = kv.Value; break; case Constants.Sas.Parameters.KeyVersionUpper: this.keyVersion = kv.Value; break; #endif default: isSASKey = false; break; // We didn't recognize the query parameter } if (isSASKey) { values.Remove(kv.Key); } } }
private static void ValidateIPAddress(IPRange ipRange, IPAddress address, Task task, bool bypassValidation) { if (!IPAddressValidation.IsValidIPv4Address(address.ToString())) { task.WriteError(new ConnectorIPRangeContainsInvalidIPv4AddressException(ipRange.Expression), ErrorCategory.InvalidArgument, null); } if (!bypassValidation && IPAddressValidation.IsReservedIPv4Address(address.ToString())) { task.WriteError(new IPRangeInConnectorContainsReservedIPAddressesException(ipRange.Expression), ErrorCategory.InvalidArgument, null); } }
public void describe_range_element_with_from_and_to_attributes() { const string xml = "<group><region><range from='192.168.0.1' to='192.168.0.2' /></region></group>"; var group = IPRangesParser.ParseFromXml(xml); Assert.Equal(1, group.Regions.Count); Assert.Equal(1, group.Regions[0].Ranges.Count); Assert.Same(group, group.Regions[0].ParentGroup); IPRange range = group.Regions[0].Ranges[0]; Assert.Equal("192.168.0.1", range.From.ToString()); Assert.Equal("192.168.0.2", range.To.ToString()); }
public void Execute_Ok() { // Arrange var ipRange = new IPRange { AwsProfileId = _profileId, Cidr = "255.255.255.10/30", Addresses = _ipsInRange.ToDictionary(x => x, y => new SubnetIpAddress {IsInUse = false, Address = IPAddress.Parse(y)}) }; IPRangeRepositoryMock.Setup(x => x.FindAll()).Returns(new List<IPRange> {ipRange}); // Act Command.Execute(_profileId); // Assert IPRangeRepositoryMock.Verify(x => x.Update(ipRange), Times.Once); }
public void Execute(Guid profileId, string subnetId) { AwsProfile profile = _profileRepository.Find(profileId); if (profile == null) { return; } INetworkService networkService = _awsClientFactory.GetClient(profile).NetworkService; string cidrRange; try { cidrRange = networkService.GetCidrBySubnetId(subnetId); } catch (AmazonEC2Exception e) { Debug.WriteLine(e.Message); return; } if (_ipRangeRepository.FindAll().Any(x => x.Cidr == cidrRange)) { return; } DateTime utcNow = DateTime.UtcNow; IPNetwork network = IPNetwork.Parse(cidrRange); List<SubnetIpAddress> subnetIpAddresses = IPNetwork.ListIPAddress(network) .Skip(5) // Amazon reserves the first four IP addresses... (x.x.x.1 - x.x.x.4) .Select(x => new SubnetIpAddress {Address = x, IsInUse = false, LastUpdateTime = utcNow}).ToList(); if (subnetIpAddresses.Any()) { subnetIpAddresses.RemoveAt(subnetIpAddresses.Count - 1); // and last IP address. } var ipRange = new IPRange { AwsProfileId = profileId, Cidr = cidrRange, Addresses = subnetIpAddresses.ToDictionary(x => x.Address.ToString()) }; _ipRangeRepository.Add(ipRange); }
/// <summary> /// Loads a IPfilter.dat. /// </summary> /// <returns> /// false = no file or the number of ranges /// </returns> /// <param name="path"> /// The path of the ipfilter.dat. /// </param> /// <param name="fileName"> /// The filename of the ipfilter.dat. /// </param> /// <param name="maxFilter"> /// The filter at loading, 255 = no filter. /// </param> public bool LoadIPFilter(string path,string fileName,byte maxFilter) { uint IPfrom; uint IPto; byte Filter; int count=0; m_maxFilter = maxFilter; string fullpath = path + "\\" + fileName; if (File.Exists(fullpath)) { using(StreamReader sr = File.OpenText(fullpath)) { string s = ""; while ((s = sr.ReadLine()) != null) { //000.000.000.000 - 000.255.255.255 , 100 , LOW_ID (invalid) //ignore comments and short string try { if (s.Length<18 || s[0]=='#' || s[0]=='/') continue; string [] splitString = s.Split(new Char [] {'-', ',', ','}); Filter = Convert.ToByte(splitString[2]); if (Filter>m_maxFilter) continue; IPfrom = IPConvert(splitString[0]); IPto = IPConvert(splitString[1]); IPRange myIPRange = new IPRange(IPfrom,IPto,Filter,splitString[3]); m_IPFilterList.Add(myIPRange); count++; } catch (Exception e) { Debug.WriteLine(s+" : "+e.Message); } } } m_IPFilterList.Sort(new IPRangeSorter()); CLog.Log(Constants.Log.Info,"IP_FILTER_LOADED",count.ToString(),fileName); m_IsFilterDatExists = true; return m_IsFilterDatExists; } else { m_IsFilterDatExists = false; return m_IsFilterDatExists; } }
public void OnlyUpdateIfDocumentChanges_FalseInDatabase() { // Arrange var notAllocated = _ipsInRange.Single(x => x == "255.255.255.8"); _ipsInRange.Remove(notAllocated); var ipRange = new IPRange { AwsProfileId = _profileId, Cidr = "255.255.255.10/30", Addresses = new Dictionary<string, SubnetIpAddress> { {"255.255.255.8", new SubnetIpAddress {Address = IPAddress.Parse("255.255.255.8"), IsInUse = false}} } }; IPRangeRepositoryMock.Setup(x => x.FindAll()).Returns(new List<IPRange> { ipRange }); // Act Command.Execute(_profileId); // Assert IPRangeRepositoryMock.Verify(x => x.Update(ipRange), Times.Never); }
public void ReadFromXml(XmlNode rootNode) { XmlNode userAccessControl = rootNode.SelectSingleNode("userAccessControl"); this.Enabled = Convert.ToBoolean(userAccessControl.Attributes["enabled"].Value); XmlNode blocked = userAccessControl.SelectSingleNode("blocked"); XmlNode allowed = userAccessControl.SelectSingleNode("allowed"); // White list if (allowed != null) foreach (XmlNode node in allowed) { if (node.NodeType == XmlNodeType.Comment) continue; if (node.Name == _IPRange) { IPRange range = new IPRange(); range.High = node.Attributes["high"].Value; range.Low = node.Attributes["low"].Value; if (AllowedRange == null) AllowedRange = new List<IPRange>(); // Add to allowed list AllowedRange.Add(range); } else if (node.Name == _IPSingle) { if (AllowedList == null) AllowedList = new List<string>(); // Read and add it AllowedList.Add(node.Attributes["value"].Value); } } // The black list if (blocked != null && (AllowedRange == null && AllowedList == null)) foreach (XmlNode node in blocked) { if (node.NodeType == XmlNodeType.Comment) continue; if (node.Name == _IPRange) { IPRange range = new IPRange(); range.High = node.Attributes["high"].Value; range.Low = node.Attributes["low"].Value; if (BlockedRange == null) BlockedRange = new List<IPRange>(); // Add to allowed list BlockedRange.Add(range); } else if (node.Name == _IPSingle) { if (BlockedList == null) BlockedList = new List<string>(); // Read and add it BlockedList.Add(node.Attributes["value"].Value); } } }