Browse Source
[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>
pull/3463/head
crueter
4 days ago
No known key found for this signature in database
GPG Key ID: 425ACD2D4830EBC6
11 changed files with
69 additions and
19 deletions
CMakeLists.txt
cpmfile.json
externals/CMakeLists.txt
externals/cpmfile.json
src/android/app/src/main/jni/native_config.cpp
src/common/settings.h
src/frontend_common/CMakeLists.txt
src/frontend_common/settings_generator.cpp
src/frontend_common/settings_generator.h
src/qt_common/CMakeLists.txt
src/yuzu/main_window.cpp
@ -589,6 +589,7 @@ if (NOT YUZU_STATIC_ROOM)
find_package ( sirit )
find_package ( gamemode )
find_package ( mcl )
find_package ( frozen )
if ( ARCHITECTURE_riscv64 )
find_package ( biscuit )
@ -700,9 +701,6 @@ if (ENABLE_QT)
# Q u a Z i p
AddJsonPackage ( quazip )
# f r o z e n
AddJsonPackage ( frozen )
endif ( )
if ( NOT YUZU_STATIC_ROOM AND NOT ( YUZU_USE_BUNDLED_FFMPEG OR YUZU_USE_EXTERNAL_FFMPEG ) )
@ -114,11 +114,5 @@
"QUAZIP_INSTALL OFF" ,
"QUAZIP_ENABLE_QTEXTCODEC OFF"
]
} ,
"frozen" : {
"package" : "frozen" ,
"repo" : "serge-sans-paille/frozen" ,
"sha" : "61dce5ae18" ,
"hash" : "b8dfe741c82bc178dfc9749d4ab5a130cee718d9ee7b71d9b547cf5f7f23027ed0152ad250012a8546399fcc1e12187efc68d89d6731256c4d2df7d04eef8d5c"
}
}
@ -92,6 +92,9 @@ if (NOT VulkanUtilityLibraries_ADDED)
find_package ( VulkanHeaders 1.3.274 REQUIRED )
endif ( )
# f r o z e n
AddJsonPackage ( frozen )
# D i s c o r d R P C
if ( USE_DISCORD_PRESENCE )
if ( ARCHITECTURE_arm64 )
@ -287,5 +287,11 @@
"hash" : "8147370f964fd82c315d6bb89adeda30186098427bf3efaa641d36282d42a263f31e96e4586bfd7ae0410ff015379c19aa4512ba160630444d3d8553afd1ec14" ,
"git_version" : "1.4.342" ,
"tag" : "v%VERSION%"
} ,
"frozen" : {
"package" : "frozen" ,
"repo" : "serge-sans-paille/frozen" ,
"sha" : "61dce5ae18" ,
"hash" : "b8dfe741c82bc178dfc9749d4ab5a130cee718d9ee7b71d9b547cf5f7f23027ed0152ad250012a8546399fcc1e12187efc68d89d6731256c4d2df7d04eef8d5c"
}
}
@ -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 ) {
@ -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
@ -1,4 +1,4 @@
# S P D X - F i l e C o p y r i g h t T e x t : C o p y r i g h t 2 0 2 5 E d e n E m u l a t o r P r o j e c t
# S P D X - F i l e C o p y r i g h t T e x t : C o p y r i g h t 2 0 2 6 E d e n E m u l a t o r P r o j e c t
# S P D X - L i c e n s e - I d e n t i f i e r : G P L - 3 . 0 - o r - l a t e r
# S P D X - F i l e C o p y r i g h t T e x t : 2 0 2 3 y u z u E m u l a t o r P r o j e c t
@ -12,7 +12,8 @@ add_library(frontend_common STATIC
f i r m w a r e _ m a n a g e r . c p p
d a t a _ m a n a g e r . h d a t a _ m a n a g e r . c p p
p l a y _ t i m e _ m a n a g e r . c p p
p l a y _ t i m e _ m a n a g e r . h )
p l a y _ t i m e _ m a n a g e r . h
s e t t i n g s _ g e n e r a t o r . h s e t t i n g s _ g e n e r a t o r . c p p )
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
P U B L I C c o r e S i m p l e I n i : : S i m p l e I n i f r o z e n : : f r o z e n - h e a d e r s
P R I V A T E c o m m o n B o o s t : : h e a d e r s )
@ -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 ) ;
}
}
}
@ -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 ( ) ;
}
@ -78,12 +78,9 @@ target_compile_definitions(qt_common PUBLIC
Q T _ N O _ U R L _ C A S T _ F R O M _ S T R I N G
)
# p a s s t a r g e t s
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 )
@ -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 ) ;