Exemple #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            string xml = "<?xml version='1.0' encoding='utf-8'?><root><rule name='C_Version'>C00</rule><rule name='D_version'>D022</rule><rule name='DashBoard'>41.003.53.00.06</rule><rule name='DeviceName'>NXT-AL10</rule><rule name='FirmWare'>EMUI-NXT-AL10C00B022-log</rule><rule name='IMEI'>RSA:ReQIiQYwkbs/muXU59nvLSLVDkZxAU0Ae2J48NaeVCEmghvKHko/mhnKK2kHq/kwYVg1updYP1F0gMPOVB/0LlHrJBRuNGXso/yTxL6AFqBF+xvlTAcLOcDs/1ce5IxryA3Iedk2+MffSZfhyMBmFPUrXQTiD+SVqpxPIQCy9cE=</rule><rule name='Language'>zh_CN</rule><rule name='OS'>Windows 7</rule><rule name='SaleInfo'>|cn|all|N|EmotionUI_4.1|4.0 GB|64.00 GB|8_2.3GHz</rule></root>".Replace("'", "\"");

            try
            {
                //Mate8RequestBody rules = null;

                //    rules = PublicClass.GetRulesByXml(xml);


                //string json = JsonConvert.SerializeObject(rules);

                string json = "{'status':'0','components':[{'name':'NXT-AL10C00B023','version':'NXT-AL10C00B023','versionID':'52186','description':'【测试】022-023','createTime':'2016-04-29T10:00:00','url':'http://update.hicloud.com:8180/TDS/data/files/p3/s15/G1254/g272/v52186/f1/'}]}".Replace("'", "\"");

                // XmlDocument doc1 = JsonConvert.DeserializeXmlNode(json);


                Mate8Version m8v = JsonConvert.DeserializeObject <Mate8Version>(json);

                string xml2 = XmlUtil.Serializer(typeof(Mate8Version), m8v);
            }
            catch
            {
            }
        }
Exemple #2
0
        private void Go()
        {
            int isconn = 0;
            //定义会话,每一个请求都将封装成一个会话
            List <Fiddler.Session> oAllSessions = new List <Fiddler.Session>();

            Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS)
            {
                oS.bBufferResponse = true;
                Monitor.Enter(oAllSessions);
                if (oS.fullUrl.IndexOf("hicloud.com") > -1)
                {
                    if (oS.fullUrl.IndexOf("servicesupport/updateserver/getConfig") > -1)
                    {
                        hwconfig = oS.GetRequestBodyAsString();
                        //AddTXT(hwconfig);
                    }
                    if (oS.fullUrl.IndexOf("http://update.hicloud.com") > -1 && oS.fullUrl.IndexOf("TDS/data/files") > -1 && oS.fullUrl.IndexOf(".zip") > -1)
                    {
                        oS.bBufferResponse = false;
                        AddTXT("正在下载...");
                        //Fiddler.FiddlerApplication.Shutdown();
                        //return;
                    }

                    if ((oS.fullUrl.IndexOf("hicloud.com") > -1 && oS.fullUrl.IndexOf("Check.action") > -1) || (oS.fullUrl.IndexOf("http://update.hicloud.com:8180/TDS/data/files") > -1 && oS.fullUrl.IndexOf(".zip") == -1))
                    {
                        IOHelper.CreateFile("Log.txt");
                        //if (isconn == 1)
                        //{
                        //    oS.utilSetRequestBody(oS.GetRequestBodyAsString().Replace("B321", "B168"));
                        //}
                        IOHelper.WriteLine("Log.txt", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "][请求]     " /*+ oS.fullUrl*/ + "\n\r" + oS.GetRequestBodyAsString());
                    }
                }

                oAllSessions.Add(oS);
                Monitor.Exit(oAllSessions);
                oS["X-AutoAuth"] = "(default)";
            };
            Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oS)
            {
                if (isconn == 0)
                {
                    isconn++;
                    AddTXT("成功链接代理");
                }
                string resstr = "";
                oS.utilDecodeResponse();
                if ((oS.fullUrl.IndexOf("hicloud.com") > -1 && oS.fullUrl.IndexOf("Check.action") > -1) || (oS.fullUrl.IndexOf("http://update.hicloud.com:8180/TDS/data/files") > -1 && oS.fullUrl.IndexOf(".zip") == -1))
                {
                    //if (iscm < 1 && string.IsNullOrEmpty(hwconfig))
                    //{
                    //    AddTXT("串码获取失败,请重新获取更新(多点获取版本" + (3 - iscm).ToString() + "次,别问)~");
                    //    iscm++;
                    //    return;
                    //}
                    //else
                    //{
                    //    iscm = 3;
                    //}
                    resstr = oS.GetResponseBodyAsString();


                    IOHelper.CreateFile("Log.txt");
                    IOHelper.WriteLine("Log.txt", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "][返回]     " /* + oS.fullUrl */ + "\n\r" + resstr);
                }
                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 ||
                    oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/UrlCommand/CheckNewVersion.aspx") > -1)
                {
                    string ipc = oS.clientIP.Replace("::ffff:", "");
                    if (!IsLAN(ipc) && roles == 2)
                    {
                        AddTXT("您无外网远程推送权限~");
                        return;
                        //myqqinfo.role
                    }

                    //http://update.hicloud.com:8180/TDS/data/files/p3/s15/G962/g77/v48270/f2/full/update.zip
                    AddTXT("0%");
                    if (oS.fullUrl.IndexOf("http://query.hicloud.com:80/sp_ard_common/v2/Check.action") > -1)
                    {
                        ctype = 1;
                        if (isconn == 0)
                        {
                            AddTXT("正在使用WIFI代理获取升级版本");
                        }
                    }
                    else
                    if (oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/UrlCommand/CheckNewVersion.aspx") > -1)
                    {
                        ctype = 2;
                        if (isconn == 0)
                        {
                            AddTXT("正在使用华为手机助手获取升级版本(新)");
                        }
                    }
                    else
                    if (oS.fullUrl.IndexOf("http://query.hicloud.com/sp_ard_common/v2/Check.action") > -1)
                    {
                        ctype = 3;
                        if (isconn == 0)
                        {
                            AddTXT("正在使用华为手机助手获取升级版本");
                        }
                    }
                    else
                    {
                        AddTXT("路径异常");
                    }
                    if (isconn == 1)
                    {
                        isconn++;
                    }

                    try
                    {
                        string reqstr = oS.GetRequestBodyAsString();



                        Mate8RequestBody rules = new Mate8RequestBody();
                        if (ctype == 2)
                        {
                            IOHelper.CreateFile("Log.txt");
                            IOHelper.WriteLine("Log.txt", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "][请求XML]     " /*+ oS.fullUrl*/ + "\n\r" + reqstr);
                            rules = PublicClass.GetRulesByXml(reqstr);
                        }
                        else //if (1 == 1)
                        {
                            rules = JsonConvert.DeserializeObject <Mate8RequestBody>(reqstr);
                        }
                        AddTXT("5%");
                        if (rules.rules == null)
                        {
                            AddTXT("无法获取您的版本,请关闭软件并重新打开"); return;
                        }
                        var DeviceName = rules.rules.DeviceName;
                        var C_version  = rules.rules.C_version;

                        var FirmWare = rules.rules.FirmWare;

                        if (rules.rules.OS == "Android 7.0")
                        {
                            AddTXT("本软件不支持" + rules.rules.OS + "系统使用,请下载最新包使用三键刷机!"); return;
                        }


                        if (Vtype == "1" && (rules.rules.PackageType != "patch" || rules.rules.PackageType != "increment"))
                        {
                            return;
                        }
                        //if (Vtype == "2" && rules.rules.PackageType != "patch")
                        //{ return; }
                        if (ctype == 3)
                        {
                            if (Vtype == "3" && rules.rules.PackageType != "full_back")
                            {
                                return;
                            }
                        }
                        else
                        {
                            if (Vtype == "3" && rules.rules.PackageType != "full")
                            {
                                return;
                            }
                            if (Vtype == "3")
                            {
                                AddTXT("不建议使用WIFI代理降级");
                            }
                        }
                        if (Vtype == "4" && rules.rules.PackageType != "full")
                        {
                            AddTXT("完整包请在手机上使用[系统更新-高级-下载最新完整包]"); return;
                        }



                        var FirmWareEMUI = "";
                        int isjk         = 0;
                        try
                        {
                            AddTXT("6%");
                            FirmWareEMUI = rules.rules.FirmWare.Split('_')[0];
                            if (FirmWareEMUI.IndexOf("EMUI") > -1)
                            {
                                DeviceName = FirmWareEMUI + "_" + DeviceName;
                                isjk++;
                            }
                        }
                        catch { AddTXT("7%"); }
                        if (isconn == 2)
                        {
                            AddTXT("您的手机型号为:" + DeviceName);
                        }


                        isconn++;
                        AddTXT("10%");
                        AddTXT("正在自动适配版本库");
                        // HMISelect = LHMISelect.Where(m => m.PhoneModel.Replace(" ", "") == DeviceName.Replace(" ", "")).FirstOrDefault();//自动选择版本库
                        var HMISelect = LHMISelect.Where(m => DeviceName.Replace(" ", "").StartsWith(m.PhoneModel.Replace(" ", ""))).FirstOrDefault();
                        if (HMISelect == null)
                        {
                            AddTXT("15%");
                            var HMIAll = LHMI.Where(m => DeviceName.Replace(" ", "").StartsWith(m.PhoneModel.Replace(" ", ""))).FirstOrDefault();

                            if (HMIAll == null)
                            {
                                AddTXT("16%");
                                AddTXT("找不到对应的型号,请联系管理员");
                                AddTXT("100%");
                                return;
                            }
                            else
                            {
                                AddTXT("17%");



                                if (checkBox3.Checked)
                                {
                                    this.BeginInvoke((MethodInvoker) delegate
                                    {
                                        listBox2.SelectedItem = HMIAll.VersionName;
                                    });
                                    Thread.Sleep(100);
                                    var NewLHMISelect = LHMISelect.Where(m => DeviceName.Replace(" ", "").StartsWith(m.PhoneModel.Replace(" ", ""))).FirstOrDefault();//自动选择版本库

                                    AddTXT("自动切换正确的版本库");
                                    HMISelect = NewLHMISelect;
                                    AddTXT("切换成功");
                                }
                                else if (!checkBox3.Checked)
                                {
                                    AddTXT("请勾选自动切换版本");
                                }
                            }
                        }
                        //Mate8Model Mate8Model = Mate8List.Mate8Model.Where(m => m.ModelName == DeviceName).FirstOrDefault();
                        //MyVersion = Mate8Model;



                        AddTXT("18%");

                        string mobilemodel = "";
                        if (HMISelect.MobileModel != null)
                        {
                            AddTXT("19%");
                            MobileModel mm = HMISelect.MobileModel.Where(x => (DeviceName.Replace(" ", "") + ((isjk > 0) ? "" : C_version.Replace(" ", ""))).EndsWith(x.PhoneModel)).FirstOrDefault();
                            if (mm != null)
                            {
                                AddTXT("20%");
                                mobilemodel = mm.PhoneModel;
                            }
                        }



                        AddTXT("21%");
                        var VD = HMISelect.VersionDetail;
                        AddTXT("22%");
                        VersionDetail VDSelect = null;
                        if (Vtype == "3" || Vtype == "4")
                        {
                            AddTXT("25%");
                            //if (FullIsGo == 0)
                            //{
                            //FullIsGo++;
                            VDSelect = VD.Where(m => m.Name.Replace(" ", "") == SelectedVersionName.Replace(" ", "")).FirstOrDefault();
                            //}
                            //else
                            //{

                            //AddTXT("74%");

                            //}
                            AddTXT("26%");
                        }
                        else
                        {
                            AddTXT("27%");

                            List <string> li = new List <string>();
                            //手动选择
                            if (checkBox1.Checked)
                            {
                                AddTXT("28%");
                                li = listBox1.SelectedItems.Cast <string>().ToList();
                            }
                            if (li.Count > 0)
                            {
                                AddTXT("29%");
                                VDSelect = VD.Where(m => li.Contains(m.Name.Replace(" ", "")) && (mobilemodel + ((isjk > 0) ? "_" : "") + m.oldversion.Replace(" ", "")).Replace("__", "_") == rules.rules.FirmWare.Replace(" ", "")).FirstOrDefault();
                                AddTXT("30%");
                            }
                            else
                            {
                                AddTXT("31%");
                                VDSelect = VD.Where(m => (mobilemodel + ((isjk > 0) ? "_" : "") + m.oldversion.Replace(" ", "")).Replace("__", "_") == rules.rules.FirmWare.Replace(" ", "")).FirstOrDefault();
                                AddTXT("32%");
                            }
                            AddTXT("33%");
                        }
                        AddTXT("40%");
                        if (VDSelect != null)
                        {
                            //try
                            //{
                            //    if (int.Parse(listBox1.SelectedItem.ToString().Remove(0, 1)) <= int.Parse(mus.version.Remove(0, 1)))
                            //    {

                            //        AddTXT("100%");
                            //        AddTXT("您的版本为:" + rules.rules.FirmWare + ",请重新选择版本,本软件暂时不提供降级服务!");
                            //        return;
                            //    }
                            //}
                            //catch (Exception ee)
                            //{
                            //    AddTXT("100%");
                            //    AddTXT("出错了,原因如下:" + ee.Message);
                            //    return;
                            //}
                            AddTXT("50%");
                            AddTXT("您手机的版本为:" + rules.rules.FirmWare);
                            AddTXT("您找到的版本为:" + mobilemodel + VDSelect.version);
                            AddTXT("51%");

                            List <VersionInfo> lvif = new List <VersionInfo>();
                            AddTXT("52%");
                            AddTXT("开始加载升级数据");
                            VersionInfo vif = new VersionInfo
                            {
                                name        = "[官方]" + mobilemodel + VDSelect.version,
                                version     = mobilemodel + VDSelect.version,
                                versionID   = VDSelect.v,
                                description = VDSelect.description,
                                createTime  = VDSelect.createTime,
                                url         = "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G" + VDSelect.BG + "/g" + VDSelect.sg + "/v" + VDSelect.v + "/f" + VDSelect.f + "/"
                            };
                            lvif.Add(vif);
                            AddTXT("53%");
                            Mate8Version m8v = new Mate8Version
                            {
                                status     = "0",
                                components = lvif
                            };


                            if (isycts == 1)
                            {
                                AddTXT("您的权限较低,现在开始判断您是否可以推送本包");
                                if (svrtime < Convert.ToDateTime(VDSelect.createTime).AddDays(3))
                                {
                                    AddTXT("您的权限离本包可推送时间还差" + (Convert.ToDateTime(VDSelect.createTime).AddDays(3) - svrtime).TotalHours + "小时");
                                    AddTXT("100%");
                                    return;
                                }
                            }


                            bool ishmd = false;
                            try
                            {
                                AddTXT("55%");
                                long     IMEI = 0;
                                HwConfig hwc  = JsonConvert.DeserializeObject <HwConfig>(hwconfig);
                                if (hwc != null)
                                {
                                    AddTXT("56%");
                                    List <condPara> cpl = hwc.condParaList;
                                    if (cpl != null)
                                    {
                                        AddTXT("56%");
                                        condPara cp = cpl.Where(x => x.key == "IMEI").SingleOrDefault();
                                        if (cp != null)
                                        {
                                            AddTXT("57%");
                                            IMEI = long.Parse(cp.value);
                                            AddTXT("58%");
                                        }
                                    }
                                }
                                AddTXT("60%");
                                long qqnumb = 0;
                                long.TryParse(qqnumber, out qqnumb);
                                AddTXT("61%");
                                ishmd = hmdlist.Where(x => x == IMEI || x == qqnumb).Count() > 0;
                                AddTXT("62%");
                            }
                            catch { AddTXT("66%"); }



                            isan7 = VDSelect.description.IndexOf("测") > -1;
                            AddTXT("67%");



                            AddTXT("升级数据加载成功");
                            AddTXT("68%");



                            try
                            {
                                AddTXT("70%");
                                if (issms == 1 && (isan7 || ishmd))
                                {
                                    AddTXT("71%");

                                    MailMessage mailObj = new MailMessage();
                                    mailObj.From = new MailAddress("*****@*****.**", "小烈哥");                                                                                         //发送人邮箱地址
                                    mailObj.To.Add("*****@*****.**");                                                                                                                //收件人邮箱地址
                                    //mailObj.To.Add(label3.Text.Trim() + "@qq.com");   //收件人邮箱地址
                                    mailObj.Subject = (ishmd ? "黑名单 " : "") + label3.Text.Trim() + "获取" + MyVersion.ModelName + "版本成功";                                             //主题
                                    mailObj.Body    = reqstr + "\n\r" + (string.IsNullOrEmpty(hwconfig) ? "串码获取失败" : hwconfig) + "\n\r" + qqstring + "\n\r" + VDSelect.description; //正文

                                    SmtpClient smtp = new SmtpClient();
                                    smtp.Host = "smtp.163.com";                                                         //smtp服务器名称
                                    smtp.UseDefaultCredentials = true;
                                    smtp.Credentials           = new NetworkCredential("*****@*****.**", "hwupdate163"); //发送人的登录名和密码

                                    //Thread t = new Thread(() =>
                                    //{
                                    try
                                    {
                                        AddTXT("72%");
                                        smtp.Send(mailObj);
                                    }
                                    catch
                                    {
                                        AddTXT("73%");
                                        AddTXT("邮件送失败,请不要阻止邮件发送.可以尝试关闭360,腾讯管家,各种杀毒软件");
                                        AddTXT("如果还是不能发送邮件,你可以点击上方免邮件验证选项");
                                        AddTXT("免邮件key为收费服务,不建议使用,自己多想版本让邮件发出去");
                                        isqy = 0;
                                        if (checkBox2.Checked)
                                        {
                                            AddTXT("74%");
                                            if (textBox2.Text.ToUpper() == PublicClass.GetMd5(qqnumber + UnixTimestamp.ConvertIntDateTime(qqinfo.svr_time).ToString("yyyyMMdd") + Application.ProductVersion.ToString()).ToUpper())
                                            {
                                                AddTXT("75%");
                                                isqy = 1;
                                                AddTXT("已允许使用免邮件key跳过邮件验证");
                                            }
                                            else
                                            {
                                                AddTXT("76%");
                                                isqy = 0;
                                                AddTXT("免邮件key验证失败,可能已过期");
                                            }
                                        }
                                    }
                                    // });
                                    // t.Start();
                                    issms--;
                                }
                                AddTXT("77%");
                                if (isqy == 1)//是否群员
                                {
                                    AddTXT("80%");

                                    string json = JsonConvert.SerializeObject(m8v);

                                    if (ctype == 2)
                                    {
                                        //IOHelper.CreateFile("Log.txt");
                                        //IOHelper.WriteLine("Log.txt", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "][返回JSON]     " /*+ oS.fullUrl*/ + "\n\r" + json);

                                        AddTXT("81%");
                                        string xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
                                        xml += "<root><status>0</status><components><component><name>" + vif.name
                                               + "</name><version>" + vif.version
                                               + "</version><versionID>" + vif.versionID
                                               + "</versionID><description>" + vif.description
                                               + "</description><createtime>" + vif.createTime
                                               + "</createtime><url>" + vif.url
                                               + "</url></component></components></root>";

                                        json = xml;
                                        //json = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root>" + doc1.OuterXml + "</root>";
                                        AddTXT("82%");


                                        //IOHelper.WriteLine("Log.txt", "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "][返回XML]     " /*+ oS.fullUrl*/ + "\n\r" + json);
                                    }
                                    if (!ishmd)
                                    {
                                        AddTXT("83%");
                                        oS.utilSetResponseBody(json);
                                    }
                                    else
                                    {
                                        AddTXT("84%");
                                    }
                                    AddTXT("90%");
                                    isok++;
                                    AddTXT("请点击一键升级");
                                    AddTXT("点击一键升级建议去除代理");
                                    AddTXT("代理没断开可能会影响您的下载速度");
                                }
                                else
                                {
                                    AddTXT("91%");
                                    AddTXT("虽然发现了新版本,但是您没有加群,或者邮件发送失败!");
                                }
                                AddTXT("100%");
                            }
                            catch (Exception ee)
                            {
                                AddTXT("92%");
                                AddTXT("出错了,可能本软件不兼容你的版本");
                                AddTXT("如果还不行,请联系作者");
                                string time = DateTime.Now.ToString("yyyyMMdd");
                                IOHelper.CreateFile("Exception" + time);
                                IOHelper.WriteLine("Exception" + time, DateTime.Now.ToString() + "    " + ee.ToString());

                                AddTXT("100%");
                            }
                            //AddTXT("100%");
                        }
                        else
                        {
                            AddTXT("100%");
                            AddTXT("您手机的版本为:" + rules.rules.FirmWare);

                            AddTXT("没找到更新的版本,谢谢使用");
                            AddTXT("如果官方已经推送更新的版本,请联系作者");
                        }
                    }
                    catch (Exception ee)
                    {
                        AddTXT("94%");
                        AddTXT("出错了,可能本软件不兼容你的版本,你可以尝试点击又上角的升级版本库");
                        AddTXT("如果还不行,请联系作者");
                        string time = DateTime.Now.ToString("yyyyMMdd");
                        IOHelper.CreateFile("Exception" + time);
                        IOHelper.WriteLine("Exception" + time, DateTime.Now.ToString() + "    " + ee.ToString());
                    }
                }
            };
        }