Ejemplo n.º 1
0
        /// <summary>
        /// 서버 Response가 file이 아닌 경우 그에 대한 데이터 검토
        /// [0] : 메세지 코드
        /// [1] : 메세지박스 문자열
        /// [2] : 작업진행창 문자열
        /// </summary>
        /// <returns></returns>
        private void measureResponseData()
        {
            MessageReceiveEventArgs mRe = new MessageReceiveEventArgs(PatchManager.JSON_COMPLETE, "");

            OnMessageReceive(mRe);
            string[] msg = new string[3] {
                "", "", ""
            };

            Debug.WriteLine("received json = " + st.getJson());
            JObject response = JObject.Parse(st.getJson());

            try
            {
                if (st.result().Equals(StreamModule.JSON))
                /// JSON 수신 단계 (완료, 오류)
                {
                    if (response.GetValue("_is_error").ToString().ToLower().Equals("true"))
                    {
                        string errorMsg = response.GetValue("_error_msg").ToString().Trim();
                        if (errorMsg.Equals(""))
                        {
                            msg[1] = MsgERR.ERR_ERROR + " \n" + MsgERR.ERR_RETRY;
                            msg[2] = MsgERR.ERR_SVRERROR;
                        }
                        else
                        {
                            msg[1] = MsgERR.ERR_ERROR + " \n" + MsgERR.ERR_ASK;//"오류가 발생하였습니다. \n관리자에게 문의 바랍니다.";
                            msg[2] = MsgERR.ERR_ERROR + " : " + HttpUtility.UrlDecode(errorMsg);
                        }
                        WorkCompletedEventArgs wCe = new WorkCompletedEventArgs(true, msg[1]);//(PatchManager.JSON_COMPLETE, "");
                        OnWorkCompleted(wCe);
                    }
                    else if (response.GetValue("_is_update").ToString().ToLower().Equals("true"))
                    {
                        JObject xmlJson = JObject.Parse(response.GetValue("_xml_list").ToString());
                        PatchXMLData(xmlJson);
                    }
                    else if (response.GetValue("_is_maxreach").ToString().ToLower().Equals("true"))
                    {
                        msg[1] = MsgERR.ERR_REACHMAXCONN + "\n" + MsgERR.ERR_RETRY;            //"허용된 접속자 수를 초과하였습니다.\n잠시 후 다시 시도해 주십시오.";
                        msg[2] = MsgERR.ERR_REACHMAXCONN;
                        WorkCompletedEventArgs wCe = new WorkCompletedEventArgs(true, msg[1]); //(PatchManager.JSON_COMPLETE, "");
                        OnWorkCompleted(wCe);
                    }
                    else if (isFileError)
                    {
                        msg[1] = MsgERR.ERR_COMMIT + "\n" + MsgERR.ERR_RETASK;
                        msg[2] = MsgERR.ERR_COMMIT;
                        WorkCompletedEventArgs wCe = new WorkCompletedEventArgs(true, msg[1]);//(PatchManager.JSON_COMPLETE, "");
                        OnWorkCompleted(wCe);
                    }
                    else
                    {
                        msg[1] = Msg.DEF_NOCHANGE;
                        msg[2] = Msg.DEF_NOCHANGE;
                        WorkCompletedEventArgs wCe = new WorkCompletedEventArgs(false, msg[1]);//(PatchManager.JSON_COMPLETE, "");
                        OnWorkCompleted(wCe);
                    }
                }
                else
                /// 파일 적용 단계
                {
                    if (isFileError)
                    {
                        msg[1] = MsgERR.ERR_COMMIT + "\n" + MsgERR.ERR_RETASK;
                        msg[2] = MsgERR.ERR_COMMIT;
                        WorkCompletedEventArgs wCe = new WorkCompletedEventArgs(true, msg[1]);//(PatchManager.JSON_COMPLETE, "");
                        OnWorkCompleted(wCe);
                    }
                    else
                    {
                        WorkCompletedEventArgs wCe = new WorkCompletedEventArgs(false, msg[1]);//(PatchManager.JSON_COMPLETE, "");
                        OnWorkCompleted(wCe);
                    }
                }
            }
            catch (Exception e)
            {
                WorkCompletedEventArgs wCe = new WorkCompletedEventArgs(true, e.ToString());//(PatchManager.JSON_COMPLETE, "");
                OnWorkCompleted(wCe);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 업데이트가 필요한지의 여부를 판단함.
        /// </summary>
        /// <returns>
        /// <para>STS_READY - 모든 파일이 최신. 패치가 필요하지 않습니다.</para>
        /// <para>STS_PATCH - 패치가 필요합니다.</para>
        /// <para>STS_REACHMAXCONN - 허용된 접속자 수를 초과하였습니다.</para>
        /// <para>STS_NETWORKERROR - 네트워크 문제로 패치를 실행할 수 없습니다.</para>
        /// <para>STS_SERVERERROR - 패치 서버에 접속할 수 없습니다.</para>
        /// <para>STS_CONFIGERROR - 설정 파일에 문제가 발생하였습니다.</para>
        /// <para>STS_ERROR - 처리되지 않은 에러가 발생하였습니다.</para>
        /// </returns>
        public string getUpdateStatus()
        {
            string update = MsgSYS.STS_READY;//"STS_READY";

            if (isConfigError)
            {
                return(MsgSYS.STS_CONFIGERROR);//"STS_CONFIGERROR";
            }
            try
            {
                if (!isServerAvailable())
                {
                    return(MsgSYS.STS_SERVERERROR);//"STS_SERVERERROR";
                }
                Uri destURI = new Uri(strDestURL);
                Debug.WriteLine("enter validating method");

                JObject sendJson = FileHashFilter.getJson(strDestPath, true);
                sendJson.Add(new JProperty("_patch_ver", strDestVer));
                sendJson.Add(new JProperty("_patch_method", "VALIDATE"));

                string jsonData = new JObject(sendJson).ToString();
                byte[] jsonByte = Encoding.Default.GetBytes(jsonData);
                Dictionary <string, string> postData = new Dictionary <string, string>();
                postData.Add("Method", "VALIDATE");
                st = new StreamModule();
                st.setEncoding(Encoding.UTF8);
                try
                {
                    webRequest  = HttpWebRequest.Create(destURI) as HttpWebRequest;
                    webResponse = st.sendData(webRequest, jsonData, postData, Encoding.UTF8);
                }
                catch
                {
                    return(MsgSYS.STS_FRAMEWORKERROR);//reqE.ToString();
                }
                st.receiveData(webResponse);


                try
                {
                    JObject response = JObject.Parse(st.getJson());
                    if (response.GetValue("_is_error").ToString().ToLower().Equals("true"))
                    {
                        update = MsgSYS.STS_ERROR;//"STS_ERROR";
                    }
                    else if (response.GetValue("_is_update").ToString().ToLower().Equals("true"))
                    {
                        update = MsgSYS.STS_PATCH;//"STS_PATCH";
                    }
                    else if (response.GetValue("_is_maxreach").ToString().ToLower().Equals("true"))
                    {
                        update = MsgSYS.STS_REACHMAXCONN;// "STS_REACHMAXCONN";
                    }
                }
                catch//  (Exception parseE)
                {
                    //return parseE.ToString();
                    return(MsgSYS.STS_PARSEERROR);//"STS_PARSEERROR";
                }
            }
            catch// (Exception eE)
            {
                //return eE.ToString();
                return(MsgSYS.STS_ERROR);//"STS_ERROR";
            }
            return(update);
        }