Beispiel #1
0
        public AjaxResCode UpdateVersion()
        {
            AjaxResCode res = new AjaxResCode();

            try
            {
                res.Data = 0;
                Mate8RequestBody Version = DecryptByModel <Mate8RequestBody>();
                rules            rule    = Version.rules;


                Hw_Users u = UsersByQ(QQNumber);
                Hw_UserVersionLibrary Uvl = new Hw_UserVersionLibrary
                {
                    UId        = u.Id,
                    DeviceName = rule.DeviceName,
                    D_version  = rule.D_version,
                    Json       = ResultStr,
                    IsResource = 0,
                    IMEI       = u.IMEI,
                    version    = rule.FirmWare.Split('B')[1].Substring(0, 3),
                    FirmWare   = rule.FirmWare
                };

                HwPushCon = new HwPushContext();

                var Iusv = HwPushCon.Hw_UserVersionLibrary.Where(x => x.UId == Uvl.UId && x.DeviceName == Uvl.DeviceName && x.D_version == Uvl.D_version);
                if (Iusv.Count() == 0)
                {
                    HwPushCon.Hw_UserVersionLibrary.Add(Uvl);
                    if (HwPushCon.SaveChanges() > 0)
                    {
                        res.Data = Uvl.id;
                    }
                }
                else
                {
                    Hw_UserVersionLibrary OldUvl = Iusv.FirstOrDefault();
                    if (OldUvl.IMEI == null)
                    {
                        res.Data = OldUvl.id;
                    }
                }
            }
            catch (Exception ee)
            {
                res.Message = ee.Message;
            }
            return(res);
        }
Beispiel #2
0
        private void Go()
        {
            int isconn = 0;
            //定义会话,每一个请求都将封装成一个会话
            List <Fiddler.Session> oAllSessions = new List <Fiddler.Session>();
            string newv = ""; string newdv = ""; long?newIMEI = null; long?thisIMEI = null; bool isnew = false; int newid = 0;
            string hwconfig = "";

            Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS)
            {
                if (isconn == 0)
                {
                    isconn++;
                    AddTXT("成功链接代理");
                }
                try
                {
                    oS.bBufferResponse = true;
                    Monitor.Enter(oAllSessions);
                    //if (oS.fullUrl.IndexOf("hicloud.com") > -1)
                    if (oS.fullUrl.IndexOf("updatebeta.hicloud.com/TDS/data/") > -1 ||
                        oS.fullUrl.IndexOf("servicesupport/updateserver/getConfig") > -1 ||
                        oS.fullUrl.IndexOf("query.hicloud.com") > -1)
                    {
                        AddTXT(oS.host);
                        //AddTXT(oS.hostname);
                        //AddTXT("10%");
                        string v = oS.GetRequestBodyAsString();
                        //AddTXT(v);



                        if (oS.fullUrl.IndexOf("servicesupport/updateserver/getConfig") > -1)
                        {
                            hwconfig = oS.GetRequestBodyAsString();
                            HwConfig hwc = JsonConvert.DeserializeObject <HwConfig>(hwconfig);
                            if (hwc != null)
                            {
                                List <condPara> cpl = hwc.condParaList;
                                if (cpl != null)
                                {
                                    condPara cp = cpl.Where(x => x.key == "IMEI").SingleOrDefault();
                                    if (cp != null)
                                    {
                                        thisIMEI = long.Parse(cp.value);
                                        AddTXT("成功获取串码:" + thisIMEI);

                                        if (User_IMEI == null)
                                        {
                                            User_IMEI = thisIMEI;
                                            UpdateIMEI(cp.value);
                                            AddTXT("串码绑定成功");
                                        }
                                    }
                                }
                            }
                        }



                        if (oS.fullUrl.IndexOf("http://query.hicloud.com:80/sp_ard_common/v2/Check.action") > -1 ||
                            oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/v2/Check.action") > -1)
                        {
                            string ipc = oS.clientIP.Replace("::ffff:", "");
                            AddTXT("您的手机IP为:" + ipc);
                            if (!PublicClass.IsLAN(ipc))
                            {
                                AddTXT("不允许网远程推送~");
                                return;
                                //myqqinfo.role
                            }



                            Mate8RequestBody rule = JsonConvert.DeserializeObject <Mate8RequestBody>(v);
                            if (resqustnum == 0)
                            {
                                newv = v;
                                //newdv = rule.rules.D_version;
                                newdv = "B" + rule.rules.FirmWare.Split('B')[1].Substring(0, 3);
                                string rsaDeviceName = RsaHelper.RSACrypto.Encrypt(PublicKey, rule.rules.DeviceName);
                                var    getlv         = HTMLHelper.Post_Http(ApiUrl + "Version/GetLatestVersion", rsaDeviceName);
                                var    getlvm        = JsonConvert.DeserializeObject <AjaxResCode>(getlv);
                                object da            = getlvm.Data;

                                if (da != null && int.Parse(da.ToString().Substring(0, 3)) <= int.Parse(rule.rules.FirmWare.Split('B')[1].Substring(0, 3)) ||
                                    da == null)
                                {
                                    string rsaFirmWare = RsaHelper.RSACrypto.Encrypt(PublicKey, v /*rule.rules.FirmWare*/);
                                    var    ref1        = HTMLHelper.Post_Http(ApiUrl + "Version/UpdateVersion", rsaFirmWare);
                                    var    ref1m       = JsonConvert.DeserializeObject <AjaxResCode>(ref1);
                                    newid = int.Parse(ref1m.Data.ToString());
                                    AddTXT("成功验证版本库");
                                    if (thisIMEI > 0)
                                    {
                                        string rsaIMEI = RsaHelper.RSACrypto.Encrypt(PublicKey, newid + "|" + thisIMEI + "|0");//IMEI
                                        var    getv    = HTMLHelper.Post_Http(ApiUrl + "Version/SetIMEI", rsaIMEI);
                                        var    getvm   = JsonConvert.DeserializeObject <AjaxResCode>(getv);
                                        AddTXT("成功验证串码");
                                    }
                                }
                                else
                                {
                                    AddTXT("开始获取在线版本");
                                    //string rsav = RsaHelper.RSACrypto.Encrypt(PublicKey, v /*rule.rules.FirmWare*/);
                                    var    getv  = HTMLHelper.Post_Http(ApiUrl + "Version/GetVersion", rsaDeviceName);
                                    var    getvm = JsonConvert.DeserializeObject <AjaxResCode>(getv);
                                    object dav   = getvm.Data;
                                    if (dav != null)
                                    {
                                        if (!string.IsNullOrEmpty(PrivateKey))
                                        {
                                            string rsaqqinfo          = RsaHelper.RSACrypto.Decrypt(PrivateKey, dav.ToString());
                                            Hw_UserVersionLibrary uvl = JsonConvert.DeserializeObject <Hw_UserVersionLibrary>(rsaqqinfo);
                                            newv    = uvl.Json;
                                            newdv   = uvl.version;
                                            newIMEI = uvl.IMEI;
                                            AddTXT("在线版本获取成功");
                                        }
                                    }
                                }
                            }
                            v = newv.Replace(newdv.Substring(0, 3), rule.rules.FirmWare.Split('B')[1].Substring(0, 3));
                            oS.utilSetRequestBody(v);
                            resqustnum++;
                        }
                        if (oS.fullUrl.IndexOf(".zip") > -1)
                        {
                            oS.bBufferResponse = false;
                        }
                        if (oS.fullUrl.IndexOf("updatebeta.hicloud.com/TDS/data/") > -1)
                        {
                            Mate8RequestBody IMEIv = JsonConvert.DeserializeObject <Mate8RequestBody>(v);
                            if (User_IMEI == null)
                            {
                                User_IMEI = long.Parse(IMEIv.rules.IMEI);
                                UpdateIMEI(IMEIv.rules.IMEI);
                                AddTXT("串码绑定成功");
                            }
                            if (newid > 0)
                            {
                                isnew = false;

                                string rsaIMEI = RsaHelper.RSACrypto.Encrypt(PublicKey, newid + "|" + IMEIv.rules.IMEI + "|1");//IMEI
                                var    getv    = HTMLHelper.Post_Http(ApiUrl + "Version/SetIMEI", rsaIMEI);
                                var    getvm   = JsonConvert.DeserializeObject <AjaxResCode>(getv);
                            }
                            //AddTXT("11%");
                            v = "{\"rules\":{\"IMEI\":\"" + newIMEI + "\"}}";
                            //AddTXT(v);
                            //AddTXT("12%");
                            oS.utilSetRequestBody(v);

                            //AddTXT("13%");
                            if (oS.fullUrl.IndexOf(".zip") > -1)
                            {
                                oS.bBufferResponse = false;
                                AddTXT("正在下载升级包...");
                            }
                            if (oS.fullUrl.IndexOf("changelog.xml") > -1)
                            {
                                AddTXT("加载日志");
                            }
                            if (oS.fullUrl.IndexOf("filelist.xml") > -1)
                            {
                                AddTXT("加载文件列表");
                            }
                        }
                    }


                    //AddTXT("51%");



                    oAllSessions.Add(oS);
                    Monitor.Exit(oAllSessions);
                    oS["X-AutoAuth"] = "(default)";
                    //AddTXT("52%");
                }
                catch (Exception ee)
                {
                    resqustnum = 0;
                    AddTXT(ee.ToString());
                }
            };
            Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oS)
            {
                oS.utilDecodeResponse();

                if (oS.fullUrl.IndexOf("http://query.hicloud.com:80/sp_ard_common/v2/Check.action") > -1 ||
                    oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/v2/Check.action") > -1)
                {
                    #region 获取版本
                    if (isconn == 1)
                    {
                        isconn++;
                        if (oS.fullUrl.IndexOf("http://query.hicloud.com:80/sp_ard_common/v2/Check.action") > -1)
                        {
                            //ctype = 1;
                            AddTXT("正在使用WIFI代理获取升级版本");
                        }
                        else
                        if (oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/v2/Check.action") > -1)
                        {
                            //ctype = 3;
                            AddTXT("正在使用华为手机助手获取升级版本(旧)");
                        }
                        else
                        {
                            AddTXT("路径异常");
                        }
                    }
                    try
                    {
                        string v = oS.GetResponseBodyAsString();

                        if (v.IndexOf("\"status\":\"1\"") > -1 || v.IndexOf("\"status\":\"-1\"") > -1)
                        {
                            AddTXT("版本获取完毕");
                            resqustnum = 0;
                        }

                        //if (v.IndexOf("EVA-AL00C00B193") > -1||v.IndexOf("EVA-AL00C00B195") > -1)
                        {
                            //v = v.Replace("EVA-AL00C00B193", "EVA-AL10C00B193");
                            oS.utilSetResponseBody(v);
                        }

                        //AddTXT(v);


                        AddTXT("开始加载升级数据");
                        //string v1 = "{\"status\":\"0\",\"components\":[{\"name\":\"EVA-AL00C00B193\",\"version\":\"EVA-AL00C00B193\",\"versionID\":\"64011\",\"description\":\"【B192-B193差分包】EVA-AL00C00B193\",\"ruleAttr\":\"type_A\",\"createTime\":\"2016-10-18T10:48:42+0000\",\"url\":\"https://updatebeta.hicloud.com/TDS/data/FF38E764923BF183D14E26F58988076A9E4423EC65B51AE3526B4888E05AECC2/1477137653/files/p3/s15/G1434/g1433/v64011/f1/\",\"reserveUrl\":\"\",\"versionType\":\"2\"}]}";

                        //oS.utilSetResponseBody(v1);
                    }
                    catch (Exception ee)
                    {
                        AddTXT(ee.ToString());
                    }
                    #endregion
                }
            };
        }