예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }