Ejemplo n.º 1
0
 internal static void UpdateGrmAsync(IEnumerable <string> listOfPackages = null)
 {
     ThreadPool.QueueUserWorkItem((WaitCallback)(obj =>
     {
         if (AppRequirementsParser.Instance.Requirements == null)
         {
             AppRequirementsParser.Instance.PopulateRequirementsFromFile();
         }
         GrmManager.GetGrmFromCloud(listOfPackages);
     }));
 }
        internal static void HandleCallMethod(JObject resJson, string vmName)
        {
            string result = "";

            JObject.Parse(resJson["bluestacks_notification"][(object)"payload"].ToString()).AssignStringIfContains("methodName", ref result);
            string lower = result.ToLower(CultureInfo.InvariantCulture);

            if (lower != null)
            {
                // ISSUE: reference to a compiler-generated method
                switch (\u003CPrivateImplementationDetails\u003E.ComputeStringHash(lower))
                {
                case 443221764:
                    if (lower == "updategrm")
                    {
                        GrmManager.UpdateGrmAsync(resJson["bluestacks_notification"][(object)"payload"][(object)"app_pkg_list"].ToIenumerableString());
                        return;
                    }
                    break;

                case 886249708:
                    if (lower == "openquitpopup")
                    {
                        CloudNotificationManager.OpenQuitPopup(resJson, vmName);
                        return;
                    }
                    break;

                case 1238708169:
                    if (lower == "calendarentry")
                    {
                        try
                        {
                            JObject androidPayload = (JObject)resJson["bluestacks_notification"][(object)"payload"][(object)"androidPayload"];
                            ClientStats.SendCalendarStats("calendar_" + resJson["bluestacks_notification"][(object)"payload"][(object)"methodType"].ToString() + "_firebase", androidPayload.ContainsKey("startDate") ? androidPayload["startDate"].ToString() : "", androidPayload.ContainsKey("endDate") ? androidPayload["endDate"].ToString() : "", androidPayload["location"].ToString(), "", "");
                            string str;
                            switch (resJson["bluestacks_notification"][(object)"payload"][(object)"methodType"].ToString())
                            {
                            case "add":
                                str = "addcalendarevent";
                                break;

                            case "update":
                                str = "updatecalendarevent";
                                break;

                            case "delete":
                                str = "deletecalendarevent";
                                break;

                            default:
                                throw new Exception("could not identify the methodType ");
                            }
                            string  endpoint = str;
                            JObject jobject1 = new JObject((object)new JProperty("event", (object)androidPayload));
                            Dictionary <string, string> data = new Dictionary <string, string>()
                            {
                                ["event"] = jobject1.ToString()
                            };
                            CloudNotificationManager.WorkQueue.Enqueue((SerialWorkQueue.Work)(() =>
                            {
                                try
                                {
                                    string guest = HTTPUtils.SendRequestToGuest(endpoint, data, vmName, 0, (Dictionary <string, string>)null, false, 1, 0, "bgp");
                                    Logger.Info("Response for calendarEntry " + guest);
                                    JObject jobject = JObject.Parse(guest);
                                    ClientStats.SendCalendarStats("calendar_" + resJson["bluestacks_notification"][(object)"payload"][(object)"methodType"].ToString() + "_android", androidPayload.ContainsKey("startDate") ? androidPayload["startDate"].ToString() : "", androidPayload.ContainsKey("endDate") ? androidPayload["endDate"].ToString() : "", androidPayload["location"].ToString(), string.Equals(jobject["result"].ToString(), "ok", StringComparison.InvariantCultureIgnoreCase).ToString((IFormatProvider)CultureInfo.InvariantCulture), jobject.ContainsKey("rowsDeleted") ? jobject["rowsDeleted"].ToString() : (jobject.ContainsKey("rowsUpdated") ? jobject["rowsUpdated"].ToString() : ""));
                                }
                                catch (Exception ex)
                                {
                                    Logger.Warning(string.Format("Guest not booted, error in sending Calendar entry event: {0}", (object)ex));
                                }
                            }));
                            return;
                        }
                        catch (Exception ex)
                        {
                            Logger.Warning(string.Format("Error in sending Calendar entry event data to android.. Json:{0} error:  {1}", (object)resJson, (object)ex));
                            return;
                        }
                    }
                    else
                    {
                        break;
                    }

                case 1286957143:
                    if (lower == "updatebstconfig")
                    {
                        CloudNotificationManager.UpdateBstConfig();
                        return;
                    }
                    break;

                case 1330308668:
                    if (lower == "downloadkeymappingcfg")
                    {
                        try
                        {
                            if (resJson["bluestacks_notification"][(object)"payload"][(object)"parserVersionList"] != null && resJson["bluestacks_notification"][(object)"payload"][(object)"parserVersionList"] is JArray jarray)
                            {
                                List <string> stringList = jarray.ToObject <List <string> >();
                                int           num1       = int.Parse(KMManager.MinParserVersion, (IFormatProvider)CultureInfo.InvariantCulture);
                                int           num2       = int.Parse(KMManager.ParserVersion, (IFormatProvider)CultureInfo.InvariantCulture);
                                using (List <string> .Enumerator enumerator = stringList.GetEnumerator())
                                {
                                    while (enumerator.MoveNext())
                                    {
                                        int num3 = int.Parse(enumerator.Current, (IFormatProvider)CultureInfo.InvariantCulture);
                                        if (num3 <= num2 && num3 >= num1)
                                        {
                                            string packageName = resJson["bluestacks_notification"][(object)"payload"][(object)"pkgName"].ToString();
                                            Logger.Info("downloadkeymappingcfg request sent to Android due to pv " + num3.ToString() + " pkg:" + packageName);
                                            Utils.SendKeymappingFiledownloadRequest(packageName, vmName);
                                            break;
                                        }
                                    }
                                    return;
                                }
                            }
                            else
                            {
                                Logger.Warning("Not processing downloadkeymappingcfg as parserVersionList not found");
                                return;
                            }
                        }
                        catch (Exception ex)
                        {
                            Logger.Warning("Error in sending download keymapping cfg request " + ex?.ToString());
                            return;
                        }
                    }
                    else
                    {
                        break;
                    }

                case 3602408690:
                    if (lower == "updatepromotions")
                    {
                        PromotionManager.ReloadPromotionsAsync();
                        return;
                    }
                    break;

                case 4066957630:
                    if (lower == "appusagestats")
                    {
                        CloudNotificationManager.HandleUsageNotification(resJson, vmName);
                        return;
                    }
                    break;
                }
            }
            Logger.Error("No method type found in HandleCallMethod json: " + resJson?.ToString());
        }
Ejemplo n.º 3
0
        public static void Main(string[] args)
        {
            Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
            App.InitExceptionAndLogging();
            ProcessUtils.LogParentProcessDetails();
            if (args != null)
            {
                App.ParseWebMagnetArgs(ref args);
                Opt.Instance.Parse(args);
            }
            string path = Path.Combine(Path.Combine(Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory.Trim('\\')).FullName, "Engine"), "Oem.cfg");

            Oem.CurrentOemFilePath = System.IO.File.Exists(path) ? path : Path.Combine(RegistryManager.Instance.EngineDataDir, "Oem.cfg");
            PortableInstaller.CheckAndRunPortableInstaller();
            if (!RegistryManager.Instance.Guest.ContainsKey(Opt.Instance.vmname))
            {
                Opt.Instance.vmname = "Android";
            }
            BlueStacks.Common.Strings.CurrentDefaultVmName = Opt.Instance.vmname;
            if (Opt.Instance.mergeCfg)
            {
                KMManager.MergeConfig(Opt.Instance.newPDPath);
                Environment.Exit(0);
            }
            string mBSTProcessIdentifier = "Bluestacks/" + RegistryManager.Instance.ClientVersion;

            if (!string.Join(string.Empty, args).Contains(mBSTProcessIdentifier))
            {
                Logger.Info("BOOT_STAGE: Client starting");
                if (Oem.IsOEMDmm)
                {
                    Logger.Info("checking DMMGamePlayer process");
                    if (!ProcessUtils.FindProcessByName("DMMGamePlayer") && !ProcessUtils.FindProcessByName("dmmemulatorsandboxlauncher"))
                    {
                        Logger.Info("DMM game player not running, so exiting");
                        Environment.Exit(0);
                    }
                }
                RegistryManager.ClientThemeName = RegistryManager.Instance.GetClientThemeNameFromRegistry();
                if (Oem.IsOEMDmm || !BlueStacksUpdater.CheckIfDownloadedFileExist())
                {
                    App app = new App();
                    app.Startup     += new StartupEventHandler(App.Application_Startup);
                    app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
                    app.InitializeComponent();
                    App.CheckIfAlreadyRunning();
                    RegistryManager.Instance.ClientLaunchParams = Opt.Instance.Json;
                    App.defaultResolution = new Fraction((long)RegistryManager.Instance.Guest[BlueStacks.Common.Strings.CurrentDefaultVmName].GuestWidth, (long)RegistryManager.Instance.Guest[BlueStacks.Common.Strings.CurrentDefaultVmName].GuestHeight);
                    SystemEvents.DisplaySettingsChanged += new EventHandler(App.HandleDisplaySettingsChanged);
                    BGPHelper.InitHttpServerAsync();
                    BlueStacksUIUtils.RunInstance(BlueStacks.Common.Strings.CurrentDefaultVmName, Opt.Instance.h, Opt.Instance.Json);
                    AppUsageTimer.SessionEventHandler();
                    if (!Oem.IsOEMDmm)
                    {
                        PromotionManager.ReloadPromotionsAsync();
                        GrmManager.UpdateGrmAsync((IEnumerable <string>)null);
                        GuidanceCloudInfoManager.Instance.AppsGuidanceCloudInfoRefresh();
                    }
                    if (!FeatureManager.Instance.IsHtmlHome)
                    {
                        BlueStacksUIUtils.DictWindows[BlueStacks.Common.Strings.CurrentDefaultVmName].CreateFirebaseBrowserControl();
                    }
                    MemoryManager.TrimMemory(true);
                    app.Run();
                }
                else
                {
                    BlueStacksUpdater.HandleUpgrade(RegistryManager.Instance.DownloadedUpdateFile);
                }
            }
            else
            {
                CefHelper.InitCef(args, mBSTProcessIdentifier);
            }
            AppUsageTimer.DetachSessionEventHandler();
            CefRuntime.Shutdown();
            App.ExitApplication();
        }