Example #1
0
        public void Disconnect(VpnChannel channel)
        {
            channel.Stop();
            this.socket?.Dispose();

            Debug.WriteLine("VPNDEMO: Disconnected");
        }
        public void Connect(VpnChannel channel)
        {
            string serverPort = "8000";
            string secret     = "test";
            string parameters = null;

            _datagramSocket = new DatagramSocket();
            channel.AssociateTransport(_datagramSocket, null);
            _datagramSocket.MessageReceived += (s, e) =>
            {
                DataReader dataReader = e.GetDataReader();
                if (dataReader.UnconsumedBufferLength > 0 && dataReader.ReadByte() == 0)
                {
                    parameters      = dataReader.ReadString(dataReader.UnconsumedBufferLength);
                    _handshakeState = HandshakeState.Received;
                }
            };
            var         serverHostName = channel.Configuration.ServerHostNameList[0];
            XmlDocument xmlDocument    = new XmlDocument();

            xmlDocument.LoadXml(channel.Configuration.CustomField);
            var firstChild = xmlDocument.FirstChild;

            if (firstChild.Name.Equals("ToyVpnConfig"))
            {
                foreach (XmlNode childNode in firstChild.ChildNodes)
                {
                    if (childNode.Name.Equals("ServerPort"))
                    {
                        serverPort = childNode.InnerText;
                    }
                    else if (childNode.Name.Equals("Secret"))
                    {
                        secret = childNode.InnerText;
                    }
                }
            }
            _datagramSocket.ConnectAsync(serverHostName, serverPort).AsTask().GetAwaiter().GetResult();
            _handshakeState = HandshakeState.Waiting;
            HandShake(_datagramSocket, secret).AsTask().GetAwaiter().GetResult();
            if (_handshakeState == HandshakeState.Received)
            {
                ConfigureAndConnect(channel, parameters);
            }
            else
            {
                channel.Stop();
            }
        }
Example #3
0
        public void Disconnect(VpnChannel channel)
        {
            State = VpnPluginState.Disconnecting;
            if (channel.PlugInContext == null)
            {
                LogLine("Disconnecting with null context", channel);
                State = VpnPluginState.Disconnected;
                return;
            }
            else
            {
                LogLine("Disconnecting with non-null context", channel);
            }
            var context = (VpnContext)channel.PlugInContext;

            channel.Stop();
            LogLine("channel stopped", channel);
            channel.PlugInContext = null;
            LogLine("Disconnected", channel);
            State = VpnPluginState.Disconnected;
            def?.Complete();
        }
Example #4
0
 public void Disconnect(VpnChannel channel)
 {
     try
     {
         State = VpnPluginState.Disconnecting;
         DebugLogger.Log("Stopping channel");
         channel.Stop();
         DebugLogger.Log("Stopping context");
         context.Stop();
         DebugLogger.Log("Context stopped");
     }
     catch (Exception ex)
     {
         DebugLogger.Log("Error disconnecting: " + ex.ToString());
     }
     finally
     {
         State = VpnPluginState.Disconnected;
         var _ = DebugLogger.ResetLoggers();
         DebugLogger.initNeeded = null;
     }
 }
 public void Disconnect(VpnChannel channel)
 {
     channel.Stop();
 }
Example #6
0
 public void Disconnect(VpnChannel channel)
 {
     channel.Stop();
     channel.PlugInContext = null;
 }