Exemplo n.º 1
0
        public void Connect(VpnChannel channel)
        {
            List <HostName> hosts = new List <HostName>();

            hosts.Add(new HostName("216.58.208.46"));

            StreamSocket streamsock = new StreamSocket();



            VpnRouteAssignment vpr = new VpnRouteAssignment();

            vpr.ExcludeLocalSubnets = true;
            VpnNamespaceAssignment na = new VpnNamespaceAssignment();

            VpnInterfaceId id = new VpnInterfaceId(Encoding.ASCII.GetBytes("1"));

            channel.AssociateTransport(streamsock, null);
            //channel.TerminateConnection("FUCKU");
            try
            {
                channel.Start(null, null, id, vpr, na, 512, 512, true, streamsock, null);
                VpnPacketBuffer buf = channel.GetVpnReceivePacketBuffer();
            }
            catch (Exception e)
            {
                return;
            }
        }
Exemplo n.º 2
0
        public void Decapsulate(VpnChannel channel, VpnPacketBuffer encapBuffer, VpnPacketBufferList decapsulatedPackets, VpnPacketBufferList controlPacketsToSend)
        {
            var context = channel.PlugInContext as VpnContext;

            while (context.PendingPackets.TryDequeue(out byte[] originBuffer))
            {
                var buf = channel.GetVpnReceivePacketBuffer();
                if (encapBuffer.Buffer.Length > buf.Buffer.Capacity)
                {
                    LogLine("Dropped one packet", channel);
                    //Drop larger packets.
                    return;
                }
                originBuffer.CopyTo(0, buf.Buffer, 0, originBuffer.Length);
                buf.Buffer.Length = (uint)originBuffer.Length;
                LogLine("Added one packet" + buf.Buffer.Length, channel);
                decapsulatedPackets.Append(buf);
            }
            //var buf = channel.GetVpnReceivePacketBuffer();
            // LogLine("Decapsulating one packet", channel);
            //if (encapBuffer.Buffer.Length > buf.Buffer.Capacity)
            //{
            //    LogLine("Dropped one packet", channel);
            //    //Drop larger packets.
            //    return;
            //}

            //encapBuffer.Buffer.CopyTo(buf.Buffer);
            //buf.Buffer.Length = encapBuffer.Buffer.Length;
            //decapsulatedPackets.Append(buf);
            // LogLine("Decapsulated one packet", channel);
        }
Exemplo n.º 3
0
        public void Decapsulate(VpnChannel channel, VpnPacketBuffer encapBuffer, VpnPacketBufferList decapsulatedPackets,
                                VpnPacketBufferList controlPacketsToSend)
        {
            var buf = channel.GetVpnReceivePacketBuffer();

            // LogLine("Decapsulating one packet", channel);
            if (encapBuffer.Buffer.Length > buf.Buffer.Capacity)
            {
                //Drop larger packets.
                return;
            }
            encapBuffer.Buffer.CopyTo(buf.Buffer);
            buf.Buffer.Length = encapBuffer.Buffer.Length;
            decapsulatedPackets.Append(buf);
        }
Exemplo n.º 4
0
        public void Decapsulate(VpnChannel channel, VpnPacketBuffer encapPacketBuffer, VpnPacketBufferList decapsulatedPackets, VpnPacketBufferList controlPacketsToSend)
        {
            try
            {
                var reader = context.outPackets?.Reader;
                if (reader == null)
                {
                    return;
                }

                while (reader.TryRead(out var bytes))
                {
                    var encapBuffer = channel.GetVpnReceivePacketBuffer();
                    var encapBuf    = encapBuffer.Buffer;
                    bytes.CopyTo(encapBuf);
                    encapBuf.Length = (uint)bytes.Length;
                    decapsulatedPackets.Append(encapBuffer);
                }
            }
            catch (Exception ex)
            {
                DebugLogger.Log("Error decapsulating packets: " + ex.ToString());
            }
        }