//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()); } } }); }
public EventManager(AuthPackageReq req, Action <int, AuthPackageResp> loginCallBack, LoginClient c) { _challenge = new AuthChallenge(); _state = LoginAuthState.GetChallenge; _req = req; _client = c; OnLoginCallBack = loginCallBack; }
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)) )); }
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(); }