diff options
| author | crueter <crueter@eden-emu.dev> | 2026-02-04 04:16:39 +0100 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-02-04 04:16:39 +0100 |
| commit | d59fcf01bf9a7b3779e537adbbf5be483db8d381 (patch) | |
| tree | 41c21f00a62ece751fca9a7a175636fd4f70a77e /src | |
| parent | b8456394f1bdbdc20aad0f27150681c96136823b (diff) | |
[frontend] Generate web token at runtime (#3462)
Rather than having that hardcoded one like before. Also adds
infrastructure which should make it easier to setup defaults at runtime
(e.g. GPU stuff?)
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3462
Reviewed-by: DraVee <dravee@eden-emu.dev>
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'src')
| -rw-r--r-- | src/android/app/src/main/jni/native_config.cpp | 6 | ||||
| -rw-r--r-- | src/common/settings.h | 2 | ||||
| -rw-r--r-- | src/frontend_common/CMakeLists.txt | 9 | ||||
| -rw-r--r-- | src/frontend_common/settings_generator.cpp | 31 | ||||
| -rw-r--r-- | src/frontend_common/settings_generator.h | 14 | ||||
| -rw-r--r-- | src/qt_common/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | src/yuzu/main_window.cpp | 2 |
7 files changed, 59 insertions, 10 deletions
diff --git a/src/android/app/src/main/jni/native_config.cpp b/src/android/app/src/main/jni/native_config.cpp index 800f3e4569..81c0afc7ef 100644 --- a/src/android/app/src/main/jni/native_config.cpp +++ b/src/android/app/src/main/jni/native_config.cpp @@ -1,18 +1,19 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later #include <string> #include <jni.h> -#include <common/fs/path_util.h> #include "android_config.h" #include "android_settings.h" #include "common/android/android_common.h" #include "common/android/id_cache.h" +#include "common/fs/path_util.h" #include "common/logging/log.h" #include "common/settings.h" #include "frontend_common/config.h" +#include "frontend_common/settings_generator.h" #include "native.h" std::unique_ptr<AndroidConfig> global_config; @@ -37,6 +38,7 @@ extern "C" { void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_initializeGlobalConfig(JNIEnv* env, jobject obj) { global_config = std::make_unique<AndroidConfig>(); + FrontendCommon::GenerateSettings(); } void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_unloadGlobalConfig(JNIEnv* env, jobject obj) { diff --git a/src/common/settings.h b/src/common/settings.h index 85f3cb21cd..f29d041c17 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -786,7 +786,7 @@ struct Values { Category::WebService}; Setting<std::string> eden_username{linkage, "Eden", "eden_username", Category::WebService}; - Setting<std::string> eden_token{linkage, "njausoolxygtpvraofqunuufhmupriifnpfggjxefntlyglr", + Setting<std::string> eden_token{linkage, "", "eden_token", Category::WebService}; // Add-Ons diff --git a/src/frontend_common/CMakeLists.txt b/src/frontend_common/CMakeLists.txt index b8a282b234..2f75fede57 100644 --- a/src/frontend_common/CMakeLists.txt +++ b/src/frontend_common/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -12,7 +12,8 @@ add_library(frontend_common STATIC firmware_manager.cpp data_manager.h data_manager.cpp play_time_manager.cpp - play_time_manager.h) + play_time_manager.h + settings_generator.h settings_generator.cpp) if (ENABLE_UPDATE_CHECKER) target_link_libraries(frontend_common PRIVATE httplib::httplib) @@ -29,4 +30,6 @@ if (ENABLE_UPDATE_CHECKER) endif() create_target_directory_groups(frontend_common) -target_link_libraries(frontend_common PUBLIC core SimpleIni::SimpleIni PRIVATE common Boost::headers) +target_link_libraries(frontend_common + PUBLIC core SimpleIni::SimpleIni frozen::frozen-headers + PRIVATE common Boost::headers) diff --git a/src/frontend_common/settings_generator.cpp b/src/frontend_common/settings_generator.cpp new file mode 100644 index 0000000000..0f09878b30 --- /dev/null +++ b/src/frontend_common/settings_generator.cpp @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +#include <random> +#include <frozen/string.h> +#include "common/settings.h" +#include "settings_generator.h" + +namespace FrontendCommon { + +void GenerateSettings() { + static std::random_device rd; + + // Web Token // + auto &token_setting = Settings::values.eden_token; + if (token_setting.GetValue().empty()) { + static constexpr const size_t token_length = 48; + static constexpr const frozen::string token_set = "abcdefghijklmnopqrstuvwxyz"; + static std::uniform_int_distribution<int> token_dist(0, token_set.size() - 1); + std::string result; + + for (size_t i = 0; i < token_length; ++i) { + size_t idx = token_dist(rd); + result += token_set[idx]; + } + + token_setting.SetValue(result); + } +} + +} diff --git a/src/frontend_common/settings_generator.h b/src/frontend_common/settings_generator.h new file mode 100644 index 0000000000..9dc3d60f1b --- /dev/null +++ b/src/frontend_common/settings_generator.h @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +namespace FrontendCommon { + +/** + * @brief GenerateSettings Generate platform-specific or randomized settings. + * Run this function at initialization time for your frontend. + */ +void GenerateSettings(); + +} diff --git a/src/qt_common/CMakeLists.txt b/src/qt_common/CMakeLists.txt index 2dc342cf9d..073301b313 100644 --- a/src/qt_common/CMakeLists.txt +++ b/src/qt_common/CMakeLists.txt @@ -78,12 +78,9 @@ target_compile_definitions(qt_common PUBLIC QT_NO_URL_CAST_FROM_STRING ) -# pass targets -find_package(frozen) - target_link_libraries(qt_common PRIVATE core Qt6::Core Qt6::Concurrent SimpleIni::SimpleIni QuaZip::QuaZip) target_link_libraries(qt_common PUBLIC frozen::frozen-headers) -target_link_libraries(qt_common PRIVATE gamemode::headers) +target_link_libraries(qt_common PRIVATE gamemode::headers frontend_common) if (NOT APPLE AND ENABLE_OPENGL) target_compile_definitions(qt_common PUBLIC HAS_OPENGL) diff --git a/src/yuzu/main_window.cpp b/src/yuzu/main_window.cpp index d50dcad994..5fee35dc7f 100644 --- a/src/yuzu/main_window.cpp +++ b/src/yuzu/main_window.cpp @@ -3,6 +3,7 @@ // Qt on macOS doesn't define VMA shit #include <boost/algorithm/string/split.hpp> +#include "frontend_common/settings_generator.h" #include "qt_common/qt_string_lookup.h" #if defined(QT_STATICPLUGIN) && !defined(__APPLE__) #undef VMA_IMPLEMENTATION @@ -432,6 +433,7 @@ MainWindow::MainWindow(bool has_broken_vulkan) Common::Log::Start(); LoadTranslation(); + FrontendCommon::GenerateSettings(); setAcceptDrops(true); ui->setupUi(this); |
