Ejemplo n.º 1
0
        // Session to introducer
        internal SSUSession(SSUHost owner, IPEndPoint remoteep, IntroducerInfo ii, IMTUProvider mtup, RouterContext rc)
        {
            Host            = owner;
            RemoteEP        = remoteep;
            MTUProvider     = mtup;
            MyRouterContext = rc;

            RemoteAddr = new I2PRouterAddress(ii.Host, ii.Port, 0, "SSU");

            // TODO: This is what PurpleI2P does. Seems strange... But there is no RouterInfo available for introducer sessions.
            RemoteRouter = MyRouterContext.MyRouterIdentity;

            TransportInstance = Interlocked.Increment(ref NTCPClient.TransportInstanceCounter);

#if LOG_ALL_TRANSPORT
            DebugUtils.LogDebug("SSUSession: " + DebugId + " Introducer instance created.");
#endif

            Fragmenter = new DataFragmenter();

            if (RemoteAddr == null)
            {
                throw new NullReferenceException("SSUSession needs an address");
            }

            IntroKey = ii.IntroKey;

            MTU = MTUProvider.GetMTU(remoteep);
        }
Ejemplo n.º 2
0
        // We are client
        public SSUSession(SSUHost owner, IPEndPoint remoteep, I2PRouterAddress remoteaddr, I2PKeysAndCert rri, IMTUProvider mtup, RouterContext rc)
        {
            Host              = owner;
            RemoteEP          = remoteep;
            RemoteAddr        = remoteaddr;
            RemoteRouter      = rri;
            MTUProvider       = mtup;
            MyRouterContext   = rc;
            TransportInstance = Interlocked.Increment(ref NTCPClient.TransportInstanceCounter);

#if LOG_ALL_TRANSPORT
            DebugUtils.LogDebug("SSUSession: " + DebugId + " Client instance created.");
#endif

            Fragmenter = new DataFragmenter();

            if (RemoteAddr == null)
            {
                throw new NullReferenceException("SSUSession needs an address");
            }

            IntroKey = new BufLen(FreenetBase64.Decode(RemoteAddr.Options["key"]));

            MTU = MTUProvider.GetMTU(remoteep);
        }
Ejemplo n.º 3
0
        public NaosServiceDiscoveryRouterEchoController(
            ILogger <NaosServiceDiscoveryRouterEchoController> logger,
            RouterContext context)
        {
            EnsureArg.IsNotNull(logger, nameof(logger));
            EnsureArg.IsNotNull(context, nameof(context));

            this.logger  = logger;
            this.context = context;
        }
Ejemplo n.º 4
0
        public SSUHost(RouterContext rc, IMTUProvider mtup)
        {
            MyRouterContext = rc;
            MTUProvider     = mtup;
            MyRouterContext.NetworkSettingsChanged += new Action(NetworkSettingsChanged);

            OurIPs = new HashSet <IPAddress>(Dns.GetHostEntry(Dns.GetHostName()).AddressList);

            Worker              = new Thread(() => Run());
            Worker.Name         = "SSUHost";
            Worker.IsBackground = true;
            Worker.Start();
        }
        public void Dynamic_Payload_can_be_deserialised_from_context()
        {
            byte[] buffer = Encoding.ASCII.GetBytes(@"{""Name"":""Hello world!""}");

            var request = new Mock<IOwinRequest>();
            request.Setup(r => r.Body).Returns(new MemoryStream(buffer));

            var context = new Mock<IOwinContext>();
            context.Setup(c => c.Request).Returns(request.Object);

            var roeturContext = new RouterContext(context.Object, new Regex("/"));
            var testClass = roeturContext.Payload();

            Assert.AreEqual("Hello world!", (string)testClass.Name);
        }
Ejemplo n.º 6
0
        public SSUHost()
        {
            MyRouterContext = RouterContext.Inst;
            MyRouterContext.NetworkSettingsChanged += new Action(NetworkSettingsChanged);

            OurIPs = new HashSet <IPAddress>(Dns.GetHostEntry(Dns.GetHostName()).AddressList);

            UpdateRouterContext();

            Worker = new Thread(Run)
            {
                Name         = "SSUHost",
                IsBackground = true
            };
            Worker.Start();
        }
        public void Dynamic_Payload_can_be_deserialised_from_context()
        {
            byte[] buffer = Encoding.ASCII.GetBytes(@"{""Name"":""Hello world!""}");

            var request = new Mock <IOwinRequest>();

            request.Setup(r => r.Body).Returns(new MemoryStream(buffer));

            var context = new Mock <IOwinContext>();

            context.Setup(c => c.Request).Returns(request.Object);

            var roeturContext = new RouterContext(context.Object, new Regex("/"));
            var testClass     = roeturContext.Payload();

            Assert.AreEqual("Hello world!", (string)testClass.Name);
        }
Ejemplo n.º 8
0
        // We are host
        public SSUSession(SSUHost owner, IPEndPoint remoteep, IMTUProvider mtup, RouterContext rc)
        {
            Host              = owner;
            RemoteEP          = remoteep;
            MTUProvider       = mtup;
            MyRouterContext   = rc;
            TransportInstance = Interlocked.Increment(ref NTCPClient.TransportInstanceCounter) + 10000;

#if LOG_ALL_TRANSPORT
            DebugUtils.LogDebug("SSUSession: " + DebugId + " Host instance created.");
#endif

            Fragmenter = new DataFragmenter();

            MTU = MTUProvider.GetMTU(remoteep);

            SendQueue.AddLast((new DeliveryStatusMessage((ulong)I2PConstants.I2P_NETWORK_ID)).Header5);
            SendQueue.AddLast((new DatabaseStoreMessage(MyRouterContext.MyRouterInfo)).Header5);

            CurrentState = new SessionCreatedState(this);
        }
Ejemplo n.º 9
0
        // This test does not work
        //[Test]
        public void TestSSU()
        {
            //Logging.LogToFile( "TestSSU.log" );

            RouterContext testcontext = new RouterContext(new I2PCertificate(I2PSigningKey.SigningKeyTypes.DSA_SHA1));

            testcontext.DefaultTCPPort = 2048 + BufUtils.RandomInt(5000);
            testcontext.DefaultUDPPort = 2048 + BufUtils.RandomInt(5000);

            var host = new SSUHost(testcontext, new FixedMTU());

            host.AllowConnectToSelf = true;

            host.ConnectionCreated += host_ConnectionCreated;

            // Remote
            var dnsa = Dns.GetHostEntry(Dns.GetHostName()).AddressList.Where(a => a.AddressFamily == AddressFamily.InterNetwork).FirstOrDefault();
            var addr = new I2PRouterAddress(dnsa, testcontext.UDPPort, 6, "SSU");

            addr.Options["key"] = FreenetBase64.Encode(testcontext.IntroKey);

            RouterContext remotetestcontext = new RouterContext(new I2PCertificate(I2PSigningKey.SigningKeyTypes.DSA_SHA1));

            remotetestcontext.DefaultTCPPort = testcontext.DefaultTCPPort + 5;
            remotetestcontext.DefaultUDPPort = testcontext.DefaultUDPPort + 5;

            var remotehost = new SSUHost(remotetestcontext, new FixedMTU());

            remotehost.AllowConnectToSelf = true;
            var client = remotehost.AddSession(addr, testcontext.MyRouterIdentity);

            client.Connect();

            var data = new BufLen(BufUtils.RandomBytes(30000));

            var messagecount = 900; // If the out queue is larger than 1000 msgs we start discarding them

            for (int i = 0; i < messagecount; ++i)
            {
                client.Send(new DataMessage(data));
            }

            System.Threading.Thread.Sleep(10000);

            for (int i = 0; i < messagecount; ++i)
            {
                if (i % 10 == 0)
                {
                    System.Threading.Thread.Sleep(100);
                }
                client.Send(new DataMessage(data));
            }

            var start = new TickCounter();

            while (DataReceived.Count < 2 * messagecount)
            {
                if (start.DeltaToNow.ToMinutes >= 1)
                {
                    Assert.Fail("Failed to receive sent data due to a timeout");
                    break;
                }

                System.Threading.Thread.Sleep(500);
            }

            for (int i = 0; i < 100; ++i)
            {
                Assert.IsTrue(((DataMessage)DataReceived.Random().Message).DataMessagePayload ==
                              new BufLen(data));
            }

            System.Threading.Thread.Sleep(500);

            client.Terminate();

            System.Threading.Thread.Sleep(500);

            host.Terminate();

            System.Threading.Thread.Sleep(500);
        }
Ejemplo n.º 10
0
 public LocationsRepository(RouterContext context)
 {
     this._context = context;
 }
Ejemplo n.º 11
0
 public RoadsRepository(RouterContext context)
 {
     this._context = context;
 }
Ejemplo n.º 12
0
 public LogisticsCenterRepository(RouterContext context)
 {
     this._context = context;
 }