Beispiel #1
0
        //private static void ConfigureCertificateValidatation(
        //    bool validateCertificates,
        //    out System.Net.SecurityProtocolType protocolType,
        //    out RemoteCertificateValidationCallback prevValidator)
        //   {
        //       prevValidator = null;
        //       protocolType = (System.Net.SecurityProtocolType)0;

        //       if (!validateCertificates)
        //       {
        //           protocolType = System.Net.ServicePointManager.SecurityProtocol;
        //           System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;
        //           prevValidator = System.Net.ServicePointManager.ServerCertificateValidationCallback;
        //           System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true;
        //       }
        //   }

        public static void DoLoginReqAction(AuthPackageReq cmd, LoginAuthRespCallBack cb)
        {
            respcb = cb;
            LoginwReqPack req = new LoginwReqPack();

            req.parms = JsonMapper.ToJson(cmd);
            string jsonStr = JsonMapper.ToJson(req);

            IHttpContent content = new StringContent(jsonStr, System.Text.Encoding.UTF8, "application/json");

            client.Post(new Uri(url), content, HttpCompletionOption.AllResponseContent, r =>
            {
                if (r.IsSuccessStatusCode)
                {
                    var respStr = r.ReadAsString();
                    try
                    {
                        AuthPackageResp resp = JsonMapper.ToObject <AuthPackageResp>(respStr);
                        respcb(resp);
                    }
                    catch (Exception e)
                    {
                        SkynetLogger.Error(Channel.NetDevice, "Json Deserialize err:" + e.Message.ToString());
                    }
                }
            });
        }
Beispiel #2
0
        public EventManager(AuthPackageReq req, Action <int, AuthPackageResp> loginCallBack, LoginClient c)
        {
            _challenge = new AuthChallenge();

            _state          = LoginAuthState.GetChallenge;
            _req            = req;
            _client         = c;
            OnLoginCallBack = loginCallBack;
        }
Beispiel #3
0
 private string EncodeToken(AuthPackageReq auth_package)
 {
     return(string.Format("{0}${1}${2}${3}${4}${5}",
                          Crypt.Base64Encode(Encoding.UTF8.GetBytes(auth_package.openId)),
                          Crypt.Base64Encode(Encoding.UTF8.GetBytes(auth_package.sdk)),
                          Crypt.Base64Encode(Encoding.UTF8.GetBytes(auth_package.serverId)),
                          Crypt.Base64Encode(Encoding.UTF8.GetBytes(auth_package.pf)),
                          Crypt.Base64Encode(Encoding.UTF8.GetBytes(auth_package.protocol)),
                          Crypt.Base64Encode(Encoding.UTF8.GetBytes(auth_package.userData))
                          ));
 }
Beispiel #4
0
        public void Connect(string host, int port, AuthPackageReq req, Action <int, AuthPackageResp> loginCallBack)
        {
            if (_netWorkState != NetWorkState.Closed)
            {
                SkynetLogger.Info(Channel.NetDevice, "LoginClient has connect action");
                return;
            }

            _timeoutEvent.Reset();
            _eventManager = new EventManager(req, loginCallBack, this);

            NetWorkChanged(NetWorkState.Connecting);

            IPAddress ipAddress = null;

            try
            {
                var addresses = Dns.GetHostEntry(host).AddressList;
                foreach (var item in addresses)
                {
                    if (item.AddressFamily != AddressFamily.InterNetwork)
                    {
                        continue;
                    }
                    ipAddress = item;
                    break;
                }
            }
            catch (Exception)
            {
                NetWorkChanged(NetWorkState.Error);
                return;
            }

            if (ipAddress == null)
            {
                throw new Exception("can not parse host : " + host);
            }

            _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            var ie = new IPEndPoint(ipAddress, port);

            _socket.BeginConnect(ie, new AsyncCallback((result) =>
            {
                try
                {
                    _socket.EndConnect(result);
                    _protocol = new Protocol(this, this._socket);
                    NetWorkChanged(NetWorkState.Connected);
                }
                catch (SocketException)
                {
                    if (_netWorkState != NetWorkState.Timeout)
                    {
                        NetWorkChanged(NetWorkState.Error);
                    }
                    Dispose();
                }
                finally
                {
                    _timeoutEvent.Set();
                }
            }), _socket);

            if (!_timeoutEvent.WaitOne(_timeoutMSec, false))
            {
                return;
            }
            if (_netWorkState == NetWorkState.Connected || _netWorkState == NetWorkState.Error)
            {
                return;
            }
            NetWorkChanged(NetWorkState.Timeout);
            Dispose();
        }