Ejemplo n.º 1
0
        public static RadiusClient CreateTestClient(int Port)
        {
            var path = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) + "/Content/radius.dictionary";
            var radiusPacketParser = new RadiusPacketParser(new RadiusDictionary(path));
            var client             = new RadiusClient(new IPEndPoint(IPAddress.Any, Port), radiusPacketParser);

            return(client);
        }
Ejemplo n.º 2
0
        public void TestMessageAuthenticatorValidationSuccess()
        {
            var request = "0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84fa3";
            var secret  = "xyzzy5461";

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var requestPacket      = radiusPacketParser.Parse(Utils.StringToByteArray(request), Encoding.UTF8.GetBytes(secret));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Get radius server for test
        /// </summary>
        /// <param name="Port">Server port</param>
        /// <param name="Secret">Packet secret</param>
        /// <param name="UserName">User name</param>
        /// <param name="UserPassword">User password</param>
        /// <param name="ServerType">Server type</param>
        /// <returns></returns>
        public static RadiusServer CreateTestServer(int Port, string Secret, string UserName, string UserPassword, RadiusServerType ServerType)
        {
            var path = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) + "/Content/radius.dictionary";
            var radiusPacketParser = new RadiusPacketParser(new RadiusDictionary(path));
            var packetHandler      = new TestPacketHandler(UserName, UserPassword);
            var repository         = new RadiusPacketHandlerRepository();

            repository.AddPacketHandler(IPAddress.Any, packetHandler, Secret);
            return(new RadiusServer(new IPEndPoint(IPAddress.Any, Port), radiusPacketParser, ServerType, repository));
        }
Ejemplo n.º 4
0
        public void TestMessageAuthenticatorValidationFail()
        {
            var request = "0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84fa3";
            var secret  = "xyzzy5461durr";

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());

            Assert.That(() => radiusPacketParser.Parse(Utils.StringToByteArray(request), Encoding.UTF8.GetBytes(secret)),
                        Throws.TypeOf <InvalidOperationException>());
        }
Ejemplo n.º 5
0
        public void TestPacketParserMissingData()
        {
            var request  = "0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84f";
            var expected = request;
            var secret   = "xyzzy5461";

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());

            Assert.Throws <ArgumentOutOfRangeException>(() => radiusPacketParser.Parse(Utils.StringToByteArray(request), Encoding.UTF8.GetBytes(secret)));
        }
        public void Test3GPPLocationInfoParsing()
        {
            var request = "01d901becff27ef45a6bc4525aa5d65f483876951f103433363838383735303636393736011b32333230313038353030373639373640666c6578696e65747304060af7e0611a1600001fe40120001031352e3020283537393333290606000000020706000000073d06000000121a0e00001fe4003e0008000000011a17000028af01113233323031303835303037363937361a0d000028af080732333230311a09000028af0a03351a09000028af0c03301a0c000028af020605b28a3e1a27000028af052130352d314239333146373339364645464537344142464646463030384530301a0c000028af0d06303830301e0b666c6578696e6574731a0c000028af0606c230840c1a0d000028af120732333230311a0c000028af0706c23084da1a0d000028af090732333230311a09000028af1a03001a09000028af1503011a10000028af160a0132f210426d1bc01a0a000028af170480011a18000028af1412383632383238303231323838323230301a0c000028af0306000000001a0e00001fe4001800080000000405060001272602120ca8378c51ef621ac229c647a85646071a1100000009170b464c4558494e45545321053136382105313736";
            var secret  = "xyzzy5461";

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var requestPacket      = radiusPacketParser.Parse(Utils.StringToByteArray(request), Encoding.UTF8.GetBytes(secret));
            var locationInfo       = requestPacket.GetAttribute <Byte[]>("3GPP-User-Location-Info");

            Assert.AreEqual("23201", Utils.GetMccMncFrom3GPPLocationInfo(locationInfo).mccmnc);
        }
Ejemplo n.º 7
0
        public void TestAccountingPacketRequestAuthenticatorFail()
        {
            var packetBytes = "0404002711019c27d4e00cbc523b3e2fc834baf401066e656d6f2806000000012c073230303234";
            var secret      = "foo";

            var radiusPacketParser   = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var requestAuthenticator = radiusPacketParser.CalculateRequestAuthenticator(Encoding.UTF8.GetBytes(secret), Utils.StringToByteArray(packetBytes));

            Assert.That(() => radiusPacketParser.Parse(Utils.StringToByteArray(packetBytes), Encoding.UTF8.GetBytes(secret)),
                        Throws.TypeOf <InvalidOperationException>());
        }
Ejemplo n.º 8
0
        public void TestAccountingPacketRequestAuthenticatorSuccess()
        {
            var packetBytes = "0404002711019c27d4e00cbc523b3e2fc834baf401066e656d6f2806000000012c073230303234";
            var secret      = "xyzzy5461";

            var radiusPacketParser   = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var requestAuthenticator = radiusPacketParser.CalculateRequestAuthenticator(Encoding.UTF8.GetBytes(secret), Utils.StringToByteArray(packetBytes));
            var packet = radiusPacketParser.Parse(Utils.StringToByteArray(packetBytes), Encoding.UTF8.GetBytes(secret));

            Assert.AreEqual(packet.Authenticator.ToHexString(), requestAuthenticator.ToHexString());
        }
Ejemplo n.º 9
0
        public void TestMessageAuthenticatorNoSideEffect()
        {
            var request  = Utils.StringToByteArray("0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84fa3");
            var expected = Utils.StringToByteArray("0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84fa3");
            var secret   = "xyzzy5461";

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var requestPacket      = radiusPacketParser.Parse(request, Encoding.UTF8.GetBytes(secret));

            Assert.AreEqual(Utils.ToHexString(expected), Utils.ToHexString(request));
        }
        public void TestResponsePacketWithProxyStateMiddle()
        {
            var request  = "010000420f403f9473978057bd83d5cb98f4227a01066e656d6f02120dbe708d93d413ce3196e43f782a0aee0406c0a8011021053135342105323330050600000003";
            var expected = "02000030acf049cee1a3ed134316e5b3348cdf3c0606000000010f06000000000e06c0a8010321053135342105323330";
            var secret   = "xyzzy5461";

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var rs       = new RadiusServer(new UdpClientFactory(), new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1812), radiusPacketParser, RadiusServerType.Authentication, NullLogger <RadiusServer> .Instance);
            var response = rs.GetResponsePacket(new MockPacketHandler(), secret, Utils.StringToByteArray(request), new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1813));

            Assert.AreEqual(expected, radiusPacketParser.GetBytes(response).ToHexString());
        }
        public void TestLTE3GPPLocationInfoParsing()
        {
            var request = "017301cea4571e304078c73bbb4367ca5fcede3e1f103433363838383735303636393736011b32333230313038353030373639373640666c6578696e65747304060af7e0611a1600001fe40120001031352e3020283537393333291e0b666c6578696e6574730606000000020706000000073d06000000121a0e00001fe4003e0008000000021a17000028af01113233323031303835303037363937361a0d000028af080732333230311a09000028af0a03351a0c000028af020605654e411a0c000028af0d06303830301a0c000028af0606c23084e01a0c000028af0706c23084da1a09000028af1503061a18000028af1412383632383238303231323838323230301a15000028af160f8232f210426d32f21000013e021a0d000028af120732333230311a0d000028af090732333230311a09000028af0c03301a0a000028af170480011a1f000028af051930382d34433038303030343933453030303034393345301a0c000028af0306000000001a09000028af1a03001a0e00001fe4001800080000000f050600012d2202121e205a653bc6cad430e70a585ab0271f1a0c0000159f5806000000031a1100000009170b464c4558494e4554532104393521043935210439352105323136";
            var secret  = "xyzzy5461";

            var ltelocationid      = Utils.StringToByteArray("8232f210426d32f21000013e02");
            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var requestPacket      = radiusPacketParser.Parse(Utils.StringToByteArray(request), Encoding.UTF8.GetBytes(secret));
            var locationInfo       = requestPacket.GetAttribute <Byte[]>("3GPP-User-Location-Info");

            Assert.AreEqual("23201", Utils.GetMccMncFrom3GPPLocationInfo(locationInfo).mccmnc);
        }
        public void TestStatusServerAccountingResponsePacket()
        {
            var request  = "0cb30026925f6b66dd5fed571fcb1db7ad3882605012e8d6eabda910875cd91fdade26367858";
            var expected = "05b300140f6f92145f107e2f504e860a4860669c";  // Note the error in the RFC. First byte should be 05 not 02
            var secret   = "xyzzy5461";

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var rs       = new RadiusServer(new UdpClientFactory(), new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1812), radiusPacketParser, RadiusServerType.Accounting, NullLogger <RadiusServer> .Instance);
            var response = rs.GetResponsePacket(new MockPacketHandler(), secret, Utils.StringToByteArray(request), new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1813));

            Assert.AreEqual(expected, radiusPacketParser.GetBytes(response).ToHexString());
        }
        public void TestResponsePacket()
        {
            var request  = "010000380f403f9473978057bd83d5cb98f4227a01066e656d6f02120dbe708d93d413ce3196e43f782a0aee0406c0a80110050600000003";
            var expected = "0200002686fe220e7624ba2a1005f6bf9b55e0b20606000000010f06000000000e06c0a80103";
            var secret   = "xyzzy5461";

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var rs       = new RadiusServer(new UdpClientFactory(), new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1812), radiusPacketParser, RadiusServerType.Authentication, NullLogger <RadiusServer> .Instance);
            var response = rs.GetResponsePacket(new MockPacketHandler(), secret, Utils.StringToByteArray(request), new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1813));

            Assert.AreEqual(expected, radiusPacketParser.GetBytes(response).ToHexString());
        }
        public void TestStatusServerAuthenticationResponsePacket()
        {
            var request  = "0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84fa3";
            var expected = "02da0014ef0d552a4bf2d693ec2b6fe8b5411d66";
            var secret   = "xyzzy5461";

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var rs       = new RadiusServer(new UdpClientFactory(), new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1812), radiusPacketParser, RadiusServerType.Authentication, NullLogger <RadiusServer> .Instance);
            var response = rs.GetResponsePacket(new MockPacketHandler(), secret, Utils.StringToByteArray(request), new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1813));

            Assert.AreEqual(expected, radiusPacketParser.GetBytes(response).ToHexString());
        }
Ejemplo n.º 15
0
        public void TestCreateDisconnectRequestPacket()
        {
            var expected = "2801001e2ec8a0da729620319be0140bc28e92682c0a3039303432414638";
            var secret   = "xyzzy5461";

            var packet = new RadiusPacket(PacketCode.DisconnectRequest, 1, secret);

            packet.AddAttribute("Acct-Session-Id", "09042AF8");

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());

            Assert.AreEqual(expected, radiusPacketParser.GetBytes(packet).ToHexString());
        }
Ejemplo n.º 16
0
        public void TestCreateStatusServerRequestPacketAccounting()
        {
            var expected = "0cb30026925f6b66dd5fed571fcb1db7ad3882605012e8d6eabda910875cd91fdade26367858";
            var secret   = "xyzzy5461";

            var packet = new RadiusPacket(PacketCode.StatusServer, 179, secret);

            packet.Authenticator = Utils.StringToByteArray("925f6b66dd5fed571fcb1db7ad388260");

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());

            Assert.AreEqual(expected, radiusPacketParser.GetBytes(packet).ToHexString());
        }
Ejemplo n.º 17
0
        public void TestCreateStatusServerRequestPacket()
        {
            var expected = "0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84fa3";
            var secret   = "xyzzy5461";

            var packet = new RadiusPacket(PacketCode.StatusServer, 218, secret);

            packet.Authenticator = Utils.StringToByteArray("8a54f4686fb394c52866e302185d0623");

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());

            Assert.AreEqual(expected, radiusPacketParser.GetBytes(packet).ToHexString());
        }
Ejemplo n.º 18
0
        public void TestPacketParserAndAssemblerStreamExtraDataIgnored()
        {
            var request  = "0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84fa3ff00ff00ff00ff";
            var expected = "0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84fa3";
            var secret   = Encoding.UTF8.GetBytes("xyzzy5461");

            var stream             = new MemoryStream(Utils.StringToByteArray(request));
            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var result             = radiusPacketParser.TryParsePacketFromStream(stream, out var packet, secret);
            var bytes = radiusPacketParser.GetBytes(packet);

            Assert.AreEqual(expected, bytes.ToHexString());
        }
Ejemplo n.º 19
0
        public void TestPacketParserAndAssemblerExtraDataIgnored()
        {
            var request  = "0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84fa300ff00ff00ff";
            var expected = "0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84fa3";
            var secret   = "xyzzy5461";


            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var requestPacket      = radiusPacketParser.Parse(Utils.StringToByteArray(request), Encoding.UTF8.GetBytes(secret));
            var bytes = radiusPacketParser.GetBytes(requestPacket);

            Assert.AreEqual(expected, bytes.ToHexString());
        }
Ejemplo n.º 20
0
        public void TestCreateAndParseAccountingRequestPacket()
        {
            var secret     = "xyzzy5461";
            var dictionary = GetDictionary();
            var packet     = new RadiusPacket(PacketCode.AccountingRequest, 0, secret);

            packet.AddAttribute("User-Name", "nemo");
            packet.AddAttribute("Acct-Status-Type", 2);
            packet.AddAttribute("NAS-IP-Address", IPAddress.Parse("192.168.1.16"));
            packet.AddAttribute("NAS-Port", 3);

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var bytes = radiusPacketParser.GetBytes(packet);
            var derp  = radiusPacketParser.Parse(bytes, Encoding.UTF8.GetBytes(secret));
        }
Ejemplo n.º 21
0
        public void TestCreatingMissingAttributes()
        {
            var secret = "xyzzy5461";

            var packet = new RadiusPacket(PacketCode.AccessRequest, 1, secret);

            packet.AddAttribute("User-Name", "*****@*****.**");
            packet.AddAttribute("User-Password", "test");

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var testPacket         = radiusPacketParser.Parse(radiusPacketParser.GetBytes(packet), Encoding.UTF8.GetBytes(secret));

            Assert.IsNull(testPacket.GetAttribute <uint?>("NAS-Port"));
            Assert.AreEqual(0, testPacket.GetAttributes <uint>("NAS-Port").Count);
        }
Ejemplo n.º 22
0
        public void TestCreateCoARequestPacket()
        {
            var expected = "2b0000266613591d86e32fa6dbae94f13772573601066e656d6f0406c0a80110050600000003";
            var secret   = "xyzzy5461";

            var packet = new RadiusPacket(PacketCode.CoaRequest, 0, secret);

            packet.Authenticator = Utils.StringToByteArray("0f403f9473978057bd83d5cb98f4227a");
            packet.AddAttribute("User-Name", "nemo");
            packet.AddAttribute("NAS-IP-Address", IPAddress.Parse("192.168.1.16"));
            packet.AddAttribute("NAS-Port", 3);

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());

            Assert.AreEqual(expected, radiusPacketParser.GetBytes(packet).ToHexString());
        }
Ejemplo n.º 23
0
        public void TestCreateAccessRequestPacket()
        {
            var expected = "010000380f403f9473978057bd83d5cb98f4227a01066e656d6f02120dbe708d93d413ce3196e43f782a0aee0406c0a80110050600000003";
            var secret   = "xyzzy5461";

            var packet = new RadiusPacket(PacketCode.AccessRequest, 0, secret);

            packet.Authenticator = Utils.StringToByteArray("0f403f9473978057bd83d5cb98f4227a");
            packet.AddAttribute("User-Name", "nemo");
            packet.AddAttribute("User-Password", "arctangent");
            packet.AddAttribute("NAS-IP-Address", IPAddress.Parse("192.168.1.16"));
            packet.AddAttribute("NAS-Port", 3);

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());

            Assert.AreEqual(expected, radiusPacketParser.GetBytes(packet).ToHexString());
        }
Ejemplo n.º 24
0
        public void TestMessageAuthenticatorResponsePacket()
        {
            var expected = "0368002c71624da25c0b5897f70539e019a81eae4f06046700045012ce70fe87a997b44de583cd19bea29321";
            var secret   = "testing123";

            var response = new RadiusPacket(PacketCode.AccessReject, 104, secret)
            {
                RequestAuthenticator = Utils.StringToByteArray("b3e22ff855a690280e6c3444c46e663b")
            };

            response.AddAttribute("EAP-Message", Utils.StringToByteArray("04670004"));
            response.AddAttribute("Message-Authenticator", new byte[16]);

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());

            Assert.AreEqual(expected, radiusPacketParser.GetBytes(response).ToHexString());
        }
Ejemplo n.º 25
0
        public void TestCreateAccessRequestPacketUnknownAttribute()
        {
            var secret = "xyzzy5461";

            var packet = new RadiusPacket(PacketCode.AccessRequest, 0, secret);

            packet.Authenticator = Utils.StringToByteArray("0f403f9473978057bd83d5cb98f4227a");
            packet.AddAttribute("User-Name", "nemo");
            packet.AddAttribute("hurr", "durr");
            packet.AddAttribute("User-Password", "arctangent");
            packet.AddAttribute("NAS-IP-Address", IPAddress.Parse("192.168.1.16"));
            packet.AddAttribute("NAS-Port", 3);

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());

            Assert.That(() => radiusPacketParser.GetBytes(packet),
                        Throws.TypeOf <InvalidOperationException>());
        }
Ejemplo n.º 26
0
        public async Task TestStatusServerAuthenticationResponsePacketUdpClientNetwork()
        {
            var request  = "0cda00268a54f4686fb394c52866e302185d062350125a665e2e1e8411f3e243822097c84fa3";
            var expected = "02da0014ef0d552a4bf2d693ec2b6fe8b5411d66";
            var secret   = "xyzzy5461";


            var client  = new UdpClientMock();
            var factory = new UdpClientMockFactory(client);

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var rs = new RadiusServer(factory, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1812), radiusPacketParser, RadiusServerType.Authentication, NullLogger <RadiusServer> .Instance);

            rs.AddPacketHandler(new IPNetwork(IPAddress.Parse("10.0.0.0"), 24), secret, new MockPacketHandler());
            rs.Start();
            var response = await client.SendMock(new UdpReceiveResult(Utils.StringToByteArray(request), new IPEndPoint(IPAddress.Parse("10.0.0.254"), 1813)));

            Assert.AreEqual(expected, response.Buffer.ToHexString());
        }
Ejemplo n.º 27
0
        static void Main(string[] args)
        {
            var path               = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) + "/Content/radius.dictionary";
            var dictionary         = new RadiusDictionary(path, NullLogger <RadiusDictionary> .Instance);
            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, dictionary);

            var packetHandler = new TestPacketHandler();
            var repository    = new PacketHandlerRepository();

            repository.AddPacketHandler(IPAddress.Any, packetHandler, "secret");

            var authenticationServer = new RadiusServer(
                new UdpClientFactory(),
                new IPEndPoint(IPAddress.Any, 1812),
                radiusPacketParser,
                RadiusServerType.Authentication, repository, NullLogger <RadiusServer> .Instance);

            authenticationServer.Start();

            Console.WriteLine("Hello World!");
            Console.ReadLine();
        }
Ejemplo n.º 28
0
        protected override void OnStart(string[] args)
        {
            try
            {
                _log.Info($"Starting RadiusServerService build version {FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion}");
                _log.Info("Reading configuration");

                var loggerFactory = new LoggerFactory();
                loggerFactory.AddNLog();
                var dictionary = new RadiusDictionary(Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory) + "\\content\\radius.dictionary", loggerFactory.CreateLogger <RadiusDictionary>());


                var radiusPacketParser = new RadiusPacketParser(loggerFactory.CreateLogger <RadiusPacketParser>(), dictionary);
                var packetHandler      = new TestPacketHandler();
                var repository         = new PacketHandlerRepository();

                repository.AddPacketHandler(IPAddress.Parse("127.0.0.1"), packetHandler, "secret");

                _authenticationServer = new RadiusServer(
                    new Net.UdpClientFactory(),
                    new IPEndPoint(IPAddress.Any, 1812),
                    radiusPacketParser,
                    RadiusServerType.Authentication,
                    repository,
                    loggerFactory.CreateLogger <RadiusServer>());


                _log.Info("Configuration read");

                _authenticationServer.Start();
            }
            catch (Exception ex)
            {
                _log.Fatal(ex, "Failed to start service");
                throw;
            }
        }
Ejemplo n.º 29
0
        public void TestCreatingAndParsingPacket()
        {
            var secret = "xyzzy5461";

            var packet = new RadiusPacket(PacketCode.AccessRequest, 1, secret);

            packet.AddAttribute("User-Name", "*****@*****.**");
            packet.AddAttribute("User-Password", "test");
            packet.AddAttribute("NAS-IP-Address", IPAddress.Parse("127.0.0.1"));
            packet.AddAttribute("NAS-Port", 100);
            packet.AddAttribute("3GPP-IMSI-MCC-MNC", "24001");
            packet.AddAttribute("3GPP-CG-Address", IPAddress.Parse("127.0.0.1"));

            var radiusPacketParser = new RadiusPacketParser(NullLogger <RadiusPacketParser> .Instance, GetDictionary());
            var testPacket         = radiusPacketParser.Parse(radiusPacketParser.GetBytes(packet), Encoding.UTF8.GetBytes(secret));

            Assert.AreEqual("*****@*****.**", testPacket.GetAttribute <string>("User-Name"));
            Assert.AreEqual("test", testPacket.GetAttribute <string>("User-Password"));
            Assert.AreEqual(IPAddress.Parse("127.0.0.1"), testPacket.GetAttribute <IPAddress>("NAS-IP-Address"));
            Assert.AreEqual(IPAddress.Parse("127.0.0.1"), testPacket.GetAttributes <IPAddress>("NAS-IP-Address").First());   // this should actually be tested with EAP-Message attributes
            Assert.AreEqual(100, testPacket.GetAttribute <uint>("NAS-Port"));
            Assert.AreEqual("24001", testPacket.GetAttribute <string>("3GPP-IMSI-MCC-MNC"));
            Assert.AreEqual(IPAddress.Parse("127.0.0.1"), testPacket.GetAttribute <IPAddress>("3GPP-CG-Address"));
        }