Example #1
0
        public void Rfc4343_Section_22_Binary()
        {
            var a = new DomainName(@"a\000\\\255z.example");

            Assert.AreEqual(2, a.Labels.Count);
            Assert.AreEqual('a', a.Labels[0][0]);
            Assert.AreEqual((char)0, a.Labels[0][1]);
            Assert.AreEqual('\\', a.Labels[0][2]);
            Assert.AreEqual((char)0xff, a.Labels[0][3]);
            Assert.AreEqual('z', a.Labels[0][4]);
            Assert.AreEqual("example", a.Labels[1]);

            Assert.AreEqual(@"a\000\092\255z.example", a.ToString());
            Assert.AreEqual(a, new DomainName(a.ToString()));
        }
Example #2
0
        /// <summary>
        ///   Creates a new instance of the <see cref="ServiceProfile"/> class
        ///   with the specified details.
        /// </summary>
        /// <param name="instanceName">
        ///    A unique identifier for the specific service instance.
        /// </param>
        /// <param name="serviceName">
        ///   The <see cref="ServiceName">name</see> of the service.
        /// </param>
        /// <param name="port">
        ///   The TCP/UDP port of the service.
        /// </param>
        /// <param name="addresses">
        ///   The IP addresses of the specific service instance. If <b>null</b> then
        ///   <see cref="MulticastService.GetIPAddresses"/> is used.
        /// </param>
        /// <remarks>
        ///   The SRV, TXT and A/AAAA resoruce records are added to the <see cref="Resources"/>.
        /// </remarks>
        public ServiceProfile(DomainName instanceName, DomainName serviceName, ushort port, IEnumerable <IPAddress> addresses = null)
        {
            InstanceName = instanceName;
            ServiceName  = serviceName;
            var fqn = FullyQualifiedName;

            var simpleServiceName = new DomainName(ServiceName.ToString()
                                                   .Replace("._tcp", "")
                                                   .Replace("._udp", "")
                                                   .Trim('_')
                                                   .Replace("_", "-"));

            HostName = DomainName.Join(InstanceName, simpleServiceName, Domain);
            Resources.Add(new SRVRecord
            {
                Name   = fqn,
                Port   = port,
                Target = HostName
            });
            Resources.Add(new TXTRecord
            {
                Name    = fqn,
                Strings = { "txtvers=1" }
            });

            foreach (var address in addresses ?? MulticastService.GetIPAddresses())
            {
                Resources.Add(AddressRecord.Create(HostName, address));
            }
        }
Example #3
0
        public void ToCanonical()
        {
            var a = new DomainName("My.EXAMPLe.ORg");

            Assert.AreEqual("My.EXAMPLe.ORg", a.ToString());
            Assert.AreEqual("my.example.org", a.ToCanonical().ToString());
        }
Example #4
0
        public void Root()
        {
            var name = new DomainName("");

            Assert.AreEqual(0, name.Labels.Count);

            Assert.AreEqual("", name.ToString());
        }
Example #5
0
        public void TopLevelDomain()
        {
            var name = new DomainName("org");

            Assert.AreEqual(1, name.Labels.Count);
            Assert.AreEqual("org", name.Labels[0]);

            Assert.AreEqual("org", name.ToString());
        }
Example #6
0
        public void FromLabels()
        {
            var name = new DomainName("my.example", "org");

            Assert.AreEqual(2, name.Labels.Count);
            Assert.AreEqual("my.example", name.Labels[0]);
            Assert.AreEqual("org", name.Labels[1]);

            Assert.AreEqual(@"my\.example.org", name.ToString());
        }
Example #7
0
        public void EscapedDotDigits()
        {
            var name = new DomainName(@"my\046example.org");

            Assert.AreEqual(2, name.Labels.Count);
            Assert.AreEqual("my.example", name.Labels[0]);
            Assert.AreEqual("org", name.Labels[1]);

            Assert.AreEqual(@"my\.example.org", name.ToString());
        }
Example #8
0
        public void Rfc4343_Section_21_Backslash()
        {
            var aslashb = new DomainName(@"a\\b");

            Assert.AreEqual(1, aslashb.Labels.Count);
            Assert.AreEqual(@"a\b", aslashb.Labels[0]);
            Assert.AreEqual(@"a\092b", aslashb.ToString());

            Assert.AreEqual(aslashb, new DomainName(@"a\092b"));
        }
Example #9
0
        public void Standard()
        {
            var name = new DomainName("my.example.org");

            Assert.AreEqual(3, name.Labels.Count);
            Assert.AreEqual("my", name.Labels[0]);
            Assert.AreEqual("example", name.Labels[1]);
            Assert.AreEqual("org", name.Labels[2]);

            Assert.AreEqual("my.example.org", name.ToString());
        }
Example #10
0
 /// <summary>
 ///   Write a domain name.
 /// </summary>
 /// <param name="value">
 ///   The value to write.
 /// </param>
 /// <param name="appendSpace">
 ///   Write a space after the value.
 /// </param>
 public void WriteDomainName(DomainName value, bool appendSpace = true)
 {
     WriteStringUnencoded(value.ToString(), appendSpace);
 }
Example #11
0
        public void FormattedString()
        {
            var name = new DomainName(@"foo ~ \.bar-12A.org");

            Assert.AreEqual(@"foo\032~\032\.bar-12A.org", name.ToString());
        }