/// <summary> /// 解析一个日志请求消息,组装一个日志请求结构 /// </summary> /// <param name="strRequestString"></param> /// <param name="strCSharpPrivateKey"></param> /// <returns></returns> private static SGetTaskLogInfo ParseStructFromRequest(string strRequestString, string strCSharpPrivateKey) { JavaScriptSerializer js = new JavaScriptSerializer(); S2CMessage_GetTaskLogRequest request = new S2CMessage_GetTaskLogRequest(); dynamic data; try { data = js.Deserialize <dynamic>(strRequestString); // 反序列化 } catch (Exception e) { LOGGER.WARN($"Server get task log request is not a invalid JSON format. \n Error = {e.ToString()} \n Request = {strRequestString}"); return(request.info); } try { request.info.taskID = int.Parse(data["taskID"]); } catch (Exception e) { LOGGER.WARN($"Parse server get task log request failed. \n Error = {e.ToString()} \n Request = {strRequestString}"); return(request.info); } return(request.info); }
/// <summary> /// 检查消息有效性 /// </summary> /// <param name="strMsg"></param> /// <param name="strRSAPublicKey"></param> /// <returns></returns> private static bool IsValidGetTaskLogMsg(string strMsg, string strRSAPublicKey) { JavaScriptSerializer js = new JavaScriptSerializer(); S2CMessage_GetTaskLogRequest request = new S2CMessage_GetTaskLogRequest(); dynamic data; try { data = js.Deserialize <dynamic>(strMsg); // 反序列化 } catch (Exception e) { LOGGER.WARN($"Server get task log request is not a invalid JSON format. \n Error = {e.ToString()} \n Request = {strMsg}"); return(false); } try { request.info.taskID = int.Parse(data["taskID"]); request.timestamp = long.Parse(data["timestamp"]); request.signature = data["signature"]; } catch (Exception e) { LOGGER.WARN($"Parse server get task log request failed. \n Error = {e.ToString()} \n Request = {strMsg}"); return(false); } string strGetSrc = request.ToGetParamsString(); string strHashData = ""; FKBaseUtils.FKHash.GetHash(strGetSrc, ref strHashData); string strCSharpPublicKey = FKBaseUtils.FKRSAEncrypt.ConvertRSAPublicKey_Java2DotNet(strRSAPublicKey); bool bCheckSignSuccessed = FKBaseUtils.FKRSASignature.IsValidRSASign(strCSharpPublicKey, strHashData, request.signature); if (!bCheckSignSuccessed) { LOGGER.WARN($"Server get task log request signature check failed."); return(false); } return(true); }