// 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); }
// 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); }
public NaosServiceDiscoveryRouterEchoController( ILogger <NaosServiceDiscoveryRouterEchoController> logger, RouterContext context) { EnsureArg.IsNotNull(logger, nameof(logger)); EnsureArg.IsNotNull(context, nameof(context)); this.logger = logger; this.context = context; }
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); }
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); }
// 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); }
// 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); }
public LocationsRepository(RouterContext context) { this._context = context; }
public RoadsRepository(RouterContext context) { this._context = context; }
public LogisticsCenterRepository(RouterContext context) { this._context = context; }