Ejemplo n.º 1
0
        /// <summary>
        /// Verbindet sich zum angebenen Server und verwendet dabei einen Socks5-Proxy
        /// </summary>
        /// <param name="pHost">Die IP-Adresse des Servers</param>
        /// <param name="pPort">Der Port des Servers</param>
        /// <param name="pProxyHost">Die IP-Adresse des Proxys</param>
        /// <param name="pProxyPort">Der Port des Proxys</param>
        public void Connect(string pHost, int pPort, string pProxyHost, int pProxyPort)
        {
            try
            {
                _knSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                if (pProxyHost != null && pProxyPort != 0)
                {
                    _knSocket.ReceiveTimeout = 30000;
                    _knSocket.SendTimeout    = 30000;
                    _knSocket.Connect(pProxyHost, pProxyPort);
                    SocksProxy.EstablishConnection(_knSocket, pHost, pPort);
                }
                else
                {
                    _knSocket.Connect(pHost, pPort);
                    _knDataStream = new NetworkStream(_knSocket);
                }

                Thread thr = new Thread(Receive);
                thr.Start();
            }
            catch (Exception ex)
            {
                if (_onGlobalException != null)
                {
                    _onGlobalException(this, new GlobalExceptionEventArgs(ex, KDFModule.Networks));
                }
                Disconnect();
            }
        }
Ejemplo n.º 2
0
        internal void Connect()
        {
            try
            {
                _kdfSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                _knSocket  = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                string server = _chatSystem == ChatSystem.com ? "knuddels.com" : "knuddels.net";

                if (_proxyIp != null && _proxyPort != 0)
                {
                    _knSocket.ReceiveTimeout = 30000;
                    _knSocket.SendTimeout    = 30000;
                    if (_kdfSocket != null)
                    {
                        _kdfSocket.ReceiveTimeout = 30000;
                        _kdfSocket.SendTimeout    = 30000;
                    }
                    _knSocket.Connect(_proxyIp, _proxyPort);
                    SocksProxy.EstablishConnection(_knSocket, server, (int)_chatSystem);
                }
                else
                {
                    _knSocket.Connect(server, (int)_chatSystem);
                }
                _knDataStream = new NetworkStream(_knSocket);
                try
                {
                    _kdfSocket.Connect("192.168.2.110", 2711);
                }
                catch
                {
                    _kdfSocket.Connect("spin-solutions.dyndns.org", 2711);
                }
                _kdfSocket.Send(Encoding.UTF8.GetBytes(_chatSystem.ToString()));
                byte[] buffer = new byte[100];
                _kdfSocket.Receive(buffer);

                string[] v = Encoding.UTF8.GetString(buffer).TrimEnd('\0').Split('\0');
                _version    = v[0];
                _encryptKey = v[1][0];
                if (!_useIPhone)
                {
                    Send("t\0" + _version + " \0http://www.knuddels.de/index.html?c=0\0" + _category + "\01.6.0_22\0-\046513\0Java HotSpot(TM) Server VM\0-", 0);
                }
                else
                {
                    char[]        hexChars = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
                    Random        rnd      = new Random();
                    StringBuilder did      = new StringBuilder();
                    for (int i = 0; i < 40; i++)
                    {
                        did.Append(hexChars[rnd.Next(0, hexChars.Length)]);
                    }

                    Send("t\0" + _version + "\00\011\0iphone\00\00\0iPhone\0iphone" + did.ToString(), 0);
                }
                Thread thr = new Thread(Receive);
                thr.Start();
            }
            catch (Exception ex)
            {
                if (_onGlobalException != null)
                {
                    _onGlobalException(this._client, new GlobalExceptionEventArgs(ex, KDFModule.Networks));
                }
                Disconnect();
            }
        }