public async Task ProcessSetup() { string apiKey = await BrowserViewModel.Instance.SettingsGetApiKey(); string username = await BrowserViewModel.Instance.SettingsGetUsername(); bool processSettings = true; if (!ApiHelper.IsUserValid(apiKey, username)) { BrowserViewModel.Instance.SendNotification(NotificationType.Danger, StringStorage.Get("Message.NoAPIorUsername")); processSettings = false; } if (processSettings) { SettingsManager.Instance.Settings["api"]["key"] = apiKey; SettingsManager.Instance.Settings["api"]["user"] = username; SettingsManager.Instance.SettingsSave(); BrowserViewModel.Instance.SendNotification(NotificationType.Success, StringStorage.Get("Message.SettingsSaved")); //StartupFinished?.Invoke(null, null); System.Diagnostics.Process.Start(FileManager.GetExecutablePath()); Environment.Exit(0); } }
public List <Release> GetAvailableUpdates() { string data = ""; try { data = ApiHelper.GetData(StringStorage.Get("URL.APIRepository") + "/releases"); } catch (Exception) { data = "[]"; } List <Release> releases = JsonConvert.DeserializeObject <List <Release> >(data); Version currentVersion = new Version(AppVersion.Version); releases.RemoveAll(delegate(Release release) { string _v = release.Version; Version v = new Version(_v); bool res = currentVersion >= v; return(res); }); return(releases); }
public void Dispose() { if (stringStorage != null) { stringStorage.Dispose(); stringStorage = null; } }
/// <summary>Define a new <see cref="StringMemoryPool"/> configuration</summary> /// <param name="method">Text storage definition</param> /// <param name="implicitNull">Is a null string entry atomically added?</param> /// <param name="baseAddress">Base address for string references</param> /// <remarks><see cref="AddressSize"/> is determined from <see cref="baseAddress"/></remarks> public StringMemoryPoolSettings(StringStorage method, bool implicitNull, Values.PtrHandle baseAddress) { { Storage = method; AllowDuplicates = false; } mAddressSize = baseAddress.Is64bit ? Shell.ProcessorSize.x64 : Shell.ProcessorSize.x32; ImplicitNull = implicitNull; BaseAddress = baseAddress; }
/// <summary>Define a new <see cref="StringMemoryPool"/> configuration</summary> /// <param name="method">Text storage definition</param> /// <param name="implicitNull">Is a null string entry atomically added?</param> /// <param name="addressSize">Size of string address references</param> /// <remarks>Base address defaults to the null equivlent on <paramref name="addressSize"/> platforms</remarks> public StringMemoryPoolSettings(StringStorage method, bool implicitNull, Shell.ProcessorSize addressSize) { { Storage = method; AllowDuplicates = false; } mAddressSize = addressSize; ImplicitNull = implicitNull; BaseAddress = mAddressSize == Shell.ProcessorSize.x64 ? Values.PtrHandle.Null64 : Values.PtrHandle.Null32; }
public void Read(KSoft.IO.EndianReader s) { var storage = new StringStorage(); storage.Read(s); Storage = storage; mAddressSize = (Shell.ProcessorSize)s.ReadByte(); ImplicitNull = s.ReadBoolean(); AllowDuplicates = s.ReadBoolean(); s.Seek(sizeof(byte)); var base_addr = new Values.PtrHandle(mAddressSize); base_addr.Read(s); BaseAddress.Read(s); }
private void OnUpdate() { if (!NetworkManager.Instance.HasConnection()) { BrowserViewModel.Instance.SendNotification(NotificationType.Warning, StringStorage.Get("Message.NoInternet")); return; } //BrowserViewModel.Instance.SendNotification(NotificationType.Success, "Test: session iteration"); OsuUser currentUserData = null; try { currentUserData = OsuApi.GetUser(CurrentSession.Username, (OsuMode)Enum.Parse(typeof(OsuMode), SettingsManager.Instance.Settings["api"]["gamemode"])); } catch (Exception) { BrowserViewModel.Instance.SendNotification(NotificationType.Danger, StringStorage.Get("Message.UserDataError")); } if (currentUserData != null) { if (CurrentSession.InitialData == null) { CurrentSession.InitialData = SessionData.FromUser(currentUserData); } CurrentSession.CurrentData = SessionData.FromUser(currentUserData); CurrentSession.DifferenceData = CurrentSession.CurrentData - CurrentSession.InitialData; BrowserViewModel.Instance.ApplySession(CurrentSession); BrowserViewModel.Instance.ApplyUser(currentUserData); int updateRate = Convert.ToInt32(SettingsManager.Instance.Settings["api"]["updateRate"]); if (updateRate != SessionThread.SleepTime) { SessionThread.SleepTime = updateRate; } } lastIteration = DateTimeOffset.Now.ToUnixTimeSeconds(); nextIteration = DateTimeOffset.Now.ToUnixTimeSeconds() + SessionThread.SleepTime; }
private void Proceed() { //BrowserViewModel.Instance.AttachedBrowser.ExecuteScriptAsyncWhenPageLoaded("$(\"#tab_session_default_view\").show();"); BrowserViewModel.Instance.AttachedBrowser.ExecuteScriptAsyncWhenPageLoaded("$(\"#tab_session_loader_view\").show();"); Thread.Sleep(1000); BrowserViewModel.Instance.AttachedBrowser.ExecuteScriptAsyncWhenPageLoaded("appReady();"); Thread.Sleep(100); PopulateSettings(); BrowserViewModel.Instance.SetAppVersionText(AppVersion.Version); BrowserViewModel.Instance.SetChromiumVersionText("CEF: " + Cef.CefSharpVersion + ", Chromium: " + Cef.ChromiumVersion); if (!NetworkManager.Instance.HasConnection()) { BrowserViewModel.Instance.SendNotification(NotificationType.Warning, StringStorage.Get("Message.NoInternet")); } SessionManager.Instance.PrepareSession(); UpdateManager.Instance.Start(); //ToolLocalApi.Instance.Start(); }
public unsafe void IncorrectPointerCrashTest() => Assert.Throws <WatchDogEffluentException>(() => { var invalid = (StrRef *)ulong.MaxValue; StringStorage.GetString(invalid, null); });
public static StringStorage Take( StringStorage source) { StringStorage taker = new StringStorage((StringStorageFactory)source.factory); taker.lines = source.lines; source.lines = new FragmentList<string>(); return taker; }
public void PrepareUpdate(Release update) { BrowserViewModel.Instance.AttachedJavascriptWrapper.Show("#cardUpdateReady"); BrowserViewModel.Instance.AttachedJavascriptWrapper.SetHtml("#updatemanagerVersionID", update.Version); BrowserViewModel.Instance.AttachedJavascriptWrapper.Show("#navigationUpdateWarning"); BrowserViewModel.Instance.AttachedJavascriptWrapper.SetHtml("#updatemanagerVersionBody", StringStorage.Get("Text.NoUpdate")); Markdown md = new Markdown(); string updateString = "<div style=\"-webkit-text-size-adjust: 50%;\">"; updateString += md.Transform(update.Body); updateString += "</div>"; BrowserViewModel.Instance.AttachedJavascriptWrapper.SetHtml("#updatemanagerVersionBody", HttpUtility.JavaScriptStringEncode(updateString)); }
/// <summary>Define a new <see cref="StringMemoryPool"/> configuration</summary> /// <param name="method">Text storage definition</param> /// <remarks> /// A null string entry <b>is</b> added by default. /// /// <see cref="AddressSize"/> is determined from <see cref="Shell.Platform.Environment"/> /// </remarks> public StringMemoryPoolSettings(StringStorage method) : this(method, true, Shell.Platform.Environment.ProcessorType.ProcessorSize) { }
/// <summary>Define a new <see cref="StringMemoryPool"/> configuration</summary> /// <param name="method">Text storage definition</param> /// <param name="implicitNull">Is a null string entry atomically added?</param> /// <remarks><see cref="AddressSize"/> is determined from <see cref="Shell.Platform.Environment"/></remarks> public StringMemoryPoolSettings(StringStorage method, bool implicitNull) : this(method, implicitNull, Shell.Platform.Environment.ProcessorType.ProcessorSize) { }
private async void PopulateTabData() { string tabsDataTask = "getTabFields();"; JavascriptResponse result_data = null; int jsAttempts = 0; do { try { jsAttempts++; JavascriptResponse res = await BrowserViewModel.Instance.AttachedBrowser.EvaluateScriptAsync(tabsDataTask); result_data = res; if (res != null && res.Result != null) { break; } } catch (Exception e) { if (jsAttempts == 5) { throw e; } await Task.Delay(1000); } } while (true); List <object> data = (List <object>)result_data.Result; data.ForEach(element => { string name = (string)element; string path = "wwwroot/tabs/tab_" + name + ".html"; if (File.Exists(path)) { string file_data = FileManager.ReadAllText(path); string prepared_file = HttpUtility.JavaScriptStringEncode(file_data); BrowserViewModel.Instance.AttachedBrowser.ExecuteScriptAsyncWhenPageLoaded("populateTab('" + name + "','" + prepared_file + "');"); } else { BrowserViewModel.Instance.SendNotification(NotificationType.Danger, String.Format(StringStorage.Get("Message.MissingTabContent"), name)); } }); Thread.Sleep(1000); PopulateAddons(); }
public SessionManager() { SessionFiles = new List <SessionFileData>(); if (File.Exists("Data/stored_sessions.json")) { string data = string.Empty; try { data = File.ReadAllText("Data/stored_sessions.json"); } catch (Exception) { BrowserViewModel.Instance.SendNotification(NotificationType.Warning, StringStorage.Get("Message.UnreadableSession")); } if (!string.IsNullOrEmpty(data)) { List <SessionFileData> storedSessions = null; try { storedSessions = JsonConvert.DeserializeObject <List <SessionFileData> >(data); } catch (Exception) { BrowserViewModel.Instance.SendNotification(NotificationType.Warning, StringStorage.Get("Message.UnreadableSession")); } if (storedSessions != null || storedSessions.Count > 0) { SessionFiles.AddRange(storedSessions); PopulateLoadList(); } } } }
public void CheckSetup() { bool exists = SettingsManager.Instance.LoadOrCreateSettings(); bool validApiOrUser = ApiHelper.IsKeyValid(SettingsManager.Instance.Settings["api"]["key"]) && ApiHelper.IsUserValid(SettingsManager.Instance.Settings["api"]["key"], SettingsManager.Instance.Settings["api"]["user"]); if (!exists || !validApiOrUser) { if (exists && !validApiOrUser) { BrowserViewModel.Instance.SendNotification(NotificationType.Danger, StringStorage.Get("Message.NoAPIorUsername")); } BrowserViewModel.Instance.AttachedJavascriptWrapper.Modal.Show("#generateSettingsModal"); cefOsuApp.SetupFinished += (object sender, EventArgs e) => { cefOsuApp.GetWindow().Dispatcher.Invoke(() => { Task.Run(async() => { BrowserViewModel.Instance.AttachedJavascriptWrapper.SetElementDisabled("#settingsConfirmButton", true); BrowserViewModel.Instance.AttachedJavascriptWrapper.SetHtml("#settingsConfirmButton", "<span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span> saving"); Task task = ProcessSetup(); if (await Task.WhenAny(task, Task.Delay(5000)) != task) { BrowserViewModel.Instance.SendNotification(NotificationType.Danger, StringStorage.Get("Message.SomethingWrong")); } //MessageBox.Show(apiKey); BrowserViewModel.Instance.AttachedJavascriptWrapper.SetElementDisabled("#settingsConfirmButton", false); BrowserViewModel.Instance.AttachedJavascriptWrapper.SetHtml("#settingsConfirmButton", "Save"); }); }); }; } else { StartupFinished?.Invoke(null, null); } }
/// <summary>Define a new <see cref="StringMemoryPool"/> configuration</summary> /// <param name="method">Text storage definition</param> /// <param name="baseAddress">Base address for string references</param> /// <remarks>A null string entry <b>is</b> added by default</remarks> public StringMemoryPoolSettings(StringStorage method, Values.PtrHandle baseAddress) : this(method, true, baseAddress) { }
//Prepare a new session public void PrepareSession(Session session = null) { SessionThread?.Join(); if (session == null) { CurrentSession = new Session { Username = SettingsManager.Instance.Settings["api"]["user"] }; } else { CurrentSession = session; } if (CurrentSession.ReadOnly) { OsuUser currentUserData = null; try { currentUserData = OsuApi.GetUser(CurrentSession.Username, (OsuMode)Enum.Parse(typeof(OsuMode), SettingsManager.Instance.Settings["api"]["gamemode"])); } catch (Exception) { BrowserViewModel.Instance.SendNotification(NotificationType.Danger, StringStorage.Get("Message.UserDataError")); return; } BrowserViewModel.Instance.ApplySession(CurrentSession); BrowserViewModel.Instance.ApplyUser(currentUserData); StopProgressHandler(); BrowserViewModel.Instance.AttachedJavascriptWrapper.Hide("#sessionProgressTime"); BrowserViewModel.Instance.AttachedJavascriptWrapper.Show("#sessionProgressReadonly"); string startDate = DateTimeOffset.FromUnixTimeSeconds(CurrentSession.SessionDate).ToString("MMMM dd yyyy HH:mm:ss"); string endDate = DateTimeOffset.FromUnixTimeSeconds(CurrentSession.SessionEndDate).ToString("MMMM dd yyyy HH:mm:ss"); BrowserViewModel.Instance.AttachedJavascriptWrapper.SetHtml("#sessionProgressReadonlyText", startDate + " to " + endDate); } else { SessionThread = new ExtendedThread(() => OnUpdate(), Convert.ToInt32(SettingsManager.Instance.Settings["api"]["updateRate"])); lastIteration = DateTimeOffset.Now.ToUnixTimeSeconds(); nextIteration = DateTimeOffset.Now.ToUnixTimeSeconds() + SessionThread.SleepTime; StartProgressHandler(); SessionThread.Start(); BrowserViewModel.Instance.AttachedJavascriptWrapper.Hide("#sessionProgressReadonly"); if (SettingsManager.Instance.Settings["display"]["showTimer"] == "true") { BrowserViewModel.Instance.AttachedJavascriptWrapper.Show("#sessionProgressTime"); } } }