/// <summary> /// 處理來自伺服器發送的SSO訊息, 並派遣到對應的服務路由 /// </summary> /// <param name="fromService"></param> public void OnFromServiceMessage(FromServiceMessage fromService) { try { var ssoData = fromService.TakeAllBytes(out byte[] _); SsoMessage ssoMessage = null; switch (fromService._encryptType) { case 0: ssoMessage = new SsoMessage(ssoData); break; case 1: ssoMessage = new SsoMessage(ssoData, _d2Key); break; case 2: ssoMessage = new SsoMessage(ssoData, _msfCore.SigInfo.ZeroKey); break; } Console.WriteLine($" [ssoMessage] ssoSeq => {ssoMessage.ssoHeader.ssoSequence}"); Console.WriteLine($" [ssoMessage] ssoSession => {ssoMessage.ssoHeader.ssoSession}"); Console.WriteLine($" [ssoMessage] ssoCommand => {ssoMessage.ssoHeader.ssoCommand}"); Service.Handle(_msfCore, ssoMessage.ssoHeader.ssoCommand, ssoMessage.ssoWupBuffer); } catch (Exception e) { Console.WriteLine($"Unknown message.\n{e.StackTrace}"); } }
private void OnPacket(byte[] data) { var serviceMessage = new FromServiceMessage(data); Console.WriteLine($"Recv =>\n{Hex.Bytes2HexStr(data)}\n"); Console.WriteLine($" [ToService] len =>\n{serviceMessage._length}\n"); Console.WriteLine($" [ToService] packetType =>\n{serviceMessage._packetType}\n"); Console.WriteLine($" [ToService] encryptType =>\n{serviceMessage._encryptType}\n"); Console.WriteLine($" [ToService] uinString =>\n{serviceMessage._uinString}\n"); _ssoMan.OnFromServiceMessage(serviceMessage); }
/// <summary> /// 處理來自伺服器發送的SSO訊息, 並派遣到對應的服務路由 /// </summary> /// <param name="fromService"></param> internal void OnFromServiceMessage(FromServiceMessage fromService) { var ssoMessage = new SsoMessage(fromService.GetBytes(), _msfCore._keyRing._zeroKey); _ssoSequence = ssoMessage._header._ssoSequence; _ssoSession = ssoMessage._header._ssoSession; Console.WriteLine($" [ssoMessage] ssoSeq =>\n{ssoMessage._header._ssoSequence}\n"); Console.WriteLine($" [ssoMessage] ssoSession =>\n{ssoMessage._header._ssoSession}\n"); Console.WriteLine($" [ssoMessage] ssoCommand =>\n{ssoMessage._header._ssoCommand}\n"); try { Service.Handle(_msfCore, ssoMessage._header._ssoCommand, ssoMessage); } catch (Exception e) { Console.WriteLine($"Unknown message.\n{e.StackTrace}"); } }