Example #1
0
        public async Task <XDocument> Transmit(XDataMessageRequest x)
        {
            try
            {
                Status = CommStatus.CONNECTED;
                if (_session == null)
                {
                    await getSocksConnection();
                }
                var msgOut = new Message();
                var encryptedCompressedMsgOut = new EncryptMessageOutput(new CompressMessageOutput(msgOut))
                {
                    MsgIn = x.ToString()
                };
                await encryptedCompressedMsgOut.process();

                var Socket = new AsynchronousSocketClient()
                {
                    ServerIP = IP, ServerPort = Port
                };
                var _result = await Socket.AsyncConversation(encryptedCompressedMsgOut.MsgOut);

                if (_result == "" || _result.Substring(0, 5) == "ERROR")
                {
                    throw new Exception(_result);
                }
                var msgIn = new Message();
                var decryptedUncompressedMsgIn = new DecryptMessageInput(new DecompressMessageInput(msgIn))
                {
                    MsgIn = _result
                };
                await decryptedUncompressedMsgIn.process();

                //Thread.Sleep(2000);
                //var m = new TransmitEntcryptedCompressedMessage() { ServerIP = IP, Port = Port };
                //m.MsgIn = x.ToString();
                //await m.process();
                //var _res= XDocument.Parse(m.MsgOut);
                var _res = XDocument.Parse(decryptedUncompressedMsgIn.MsgOut);
                Status = CommStatus.OFFLINE;
                return(_res);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Status = CommStatus.ERROR;
                throw e;
            }
        }
Example #2
0
        public async Task getSocksConnection()
        {
            IPServerList.Clear();
            Status = CommStatus.TRYCONNECT;

            List <string> serverList = new List <string>()
            {
                "val-tel1.espackeuro.com",
                "val-nwckkdjtjv.dynamic-m.com",
                "liv-bkrgrgvmjv.dynamic-m.com",
                "gra-bghgwkwqjv-1.dynamic-m.com",
                "nit-cwcgtdrrjv-1.dynamic-m.com"
            };

            foreach (var server in serverList)
            {
                try
                {
                    IPServerList.Add((await Dns.GetHostAddressesAsync(server))[0]);
                } catch
                {
                }
            }
            ;
            if (IPServerList.Count == 0)
            {
#if DEBUG
                IPServerList.Add(IPAddress.Parse("10.200.90.19"));
#else
                IPServerList.Add(IPAddress.Parse("213.0.111.218"));

                IPServerList.Add(IPAddress.Parse("46.24.173.2"));

                IPServerList.Add(IPAddress.Parse("81.150.8.34"));
                IPServerList.Add(IPAddress.Parse("81.12.170.94"));
#endif
            }


            _session = "";
            var _message = new XDataMessageRequest();
            _message.SetActionDefinition("Start Session");
            _message.SetActionData(new XElement("data", Serial));
            _message.SetSession("");
            XDocument _msgOut = new XDocument();
            Port = 17011;
            string _ip       = "";
            string _messages = "";
            foreach (var _IP in IPServerList)
            {
                _ip = $"{_ip}-{_IP.ToString()}";
                IP  = _IP;
                try
                {
                    _msgOut = await Transmit(_message);

                    break;
                } catch (Exception ex)
                {
                    _messages = $"{_messages}-{ex.Message}";
                }
            }

            //first phase, get the destination external IP to connect
            //create the xml message with the session information

            var _result = _msgOut.Root;
            if (_result == null || _result.Value.Substring(0, 5) == "ERROR")
            {
                _session = null;
                throw new Exception(_result?.Value ?? $"Cannot connect to any server. Last IP {_ip}, messages received: {_messages}");
            }
            else
            {
                var _parameters = _result.Element("parameters").Elements("parameter");

                string _sIP = (from _par in _parameters where _par.Element("Name").Value.ToString() == "@ExternalIP" select _par.Element("Value").Value).First();
#if DEBUG
                //_sIP = "10.200.90.19";//"46.24.173.2";
#endif
                var _COD3 = (from _par in _parameters where _par.Element("Name").Value.ToString() == "@COD3" select _par.Element("Value").Value).First();
                _session = (from _par in _parameters where _par.Element("Name").Value.ToString() == "@SessionNumber" select _par.Element("Value").Value).First();
                IP       = IPAddress.Parse(_sIP);
            }
        }