Beispiel #1
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
                    }
                }
            }
        }
Beispiel #5
0
 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());
 }
Beispiel #6
0
        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>());
        }
Beispiel #9
0
        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,
Beispiel #11
0
        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;
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        /// <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);
                 }
             }
         }
     }
 }
Beispiel #15
0
        // 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());
        }
Beispiel #16
0
 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);
 }
Beispiel #17
0
        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);
        }
Beispiel #18
0
        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);
        }
Beispiel #20
0
        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);
        }
Beispiel #21
0
 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));
 }
Beispiel #22
0
        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());
        }
Beispiel #23
0
        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);
 }
Beispiel #25
0
        /// <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)));
            }
        }
Beispiel #27
0
        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);
        }
Beispiel #28
0
        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);
        }
Beispiel #29
0
        /// <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;
        }
Beispiel #31
0
        /// <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);
     }
 }
Beispiel #33
0
        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);
        }
Beispiel #36
0
 /// <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;
     }
 }
Beispiel #37
0
 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);
 }
        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);
        }
Beispiel #39
0
			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);
						}
					}
			}