Commit Graph

500 Commits

Author SHA1 Message Date
otavepto
b137cf0f38 prefix these debug messages in networking 2024-03-08 18:13:29 +02:00
otavepto
2cbc786430 revert the workaround for the usage of private/hidden glibc exports on linux, and fix it by directly calling the corresponding functions without the ver parameter: stat, lstat, stat64, lstat64, mknod.
might break stuff!
reverts 3b6663ca99
2024-03-01 13:35:39 +02:00
otavepto
46424f43bc fix this debug message in steam_networking 2024-02-29 21:06:50 +02:00
otavepto
9eceff7792 Visual Studio has dubious language extensions! 2024-02-29 19:59:53 +02:00
otavepto
dfc8be4a7c change the server type parameter of the request before continuing the code, since it's used multiple times and also being set in the request object 2024-02-29 19:59:53 +02:00
otavepto
3d836d694d added 2 new options which enable the new behavior for Steam Matchmaking Servers 2024-02-29 19:59:53 +02:00
otavepto
6a7bd6c063 grab players list for Steam_Matchmaking_Servers from Steam_GameServers , probably broken! 2024-02-29 19:59:53 +02:00
otavepto
8393261473 * partially revert matchmaking code
* request all server lists as LAN servers
2024-02-29 19:59:53 +02:00
otavepto
c38601fdcd Restore networking, source query, avatar, friends changes/additions from: 75e6d7c8ab, 4399c0b12b 2024-02-29 19:59:53 +02:00
otavepto
001e74aafa revert all networking, source query, avatar, friends changes/additions from: 75e6d7c8ab, 4399c0b12b 2024-02-29 19:59:53 +02:00
otavepto
4dd152911d * more accurately handle and download steamhttp requests in multi-threaded manner
* allow forcing the API `Steam_HTTP::SendHTTPRequest()` to succeed via a config file

* change http_online.txt to download_steamhttp_requests.txt
2024-02-23 20:41:30 +02:00
otavepto
505bec9896 some logging for networking 2024-02-17 22:36:24 +02:00
otavepto
b92a70e9ac a hacky fix for the overlay on dx12 2024-02-09 20:39:01 +02:00
otavepto
e4af4f2b00 allow setting the ip country reported to the game via a file 2024-02-07 04:22:33 +02:00
otavepto
1bba2c09b0 * allow setting the achievements notifications via config file
* fixed a mistake when discarding ut8 bom marker
2024-01-26 14:37:17 +02:00
otavepto
b016f3dafa refactor user_stats
* use const str as a param for defined_achievements_find

* GetStat()/SetStat(): return false if given name is not defined by stats.txt

* according to docs:
GetAchievement()/SetAchievement()/ClearAchievement()/GetAchievementAndUnlockTime()/IndicateAchievementProgress()
will always return true if the name was not null and exists in Admin page (achievements.json)

* ClearAchievement(): don't write user data unless json object doesn't exist, or key "earned" is true

* reduce the code in GetAchievementDisplayAttribute()

* according to docs IndicateAchievementProgress() returns false if the achievement is already unlocked

* many logging
2024-01-25 23:24:16 +02:00
otavepto
374b9a8029 forgot that! 2024-01-25 23:24:16 +02:00
otavepto
a09bc24437 refactor steam_apps 2024-01-25 23:24:16 +02:00
otavepto
8c012f7101 lots of todo notes 2024-01-25 23:24:16 +02:00
otavepto
2c428e071a make sure mod path, if relative, would be relative to the lib itself + return utf8 string 2024-01-25 17:06:45 +02:00
otavepto
d73faeff38 use the new functions to check for friend ID in the auto accept list 2024-01-24 22:57:32 +02:00
otavepto
245e1414fc allow accepting any invitation by using an empty file 2024-01-24 22:57:32 +02:00
otavepto
6864aafc12 restored missing files! why! 2024-01-24 22:57:32 +02:00
otavepto
2fa2a9229c parse the new disable_overlay_warning_*.txt settings + fixed or condition of warn_forced_setting 2024-01-24 22:57:32 +02:00
otavepto
3a64b604a0 debug message 2024-01-22 19:43:56 +02:00
otavepto
9e84f4abec forgot that while debugging! 2024-01-22 19:26:51 +02:00
otavepto
371d50b62e make sure buffer is nulled in ugc::GetItemInstallInfo() + a bunch of params check & stub code 2024-01-20 23:01:29 +02:00
otavepto
2800264040 make sure mod path is absolute and normalized for current OS 2024-01-20 22:51:40 +02:00
otavepto
6249d7ca4d * attempt to auto detect mods with the same behavior as if they were defined in mods.json, for an easier config
* new function in local storage to get list of folders at root level, given some path

* use last week epoch as the default time for mods dates (created, added, etc...)

* UGC: some params checks according to SDK docs for CreateQueryXXX() functions

* fixed some mistakes
2024-01-20 18:46:43 +02:00
otavepto
45d76fbc31 bunch of scoped debug messages 2024-01-20 18:46:43 +02:00
otavepto
43debcbaf8 * local storage: allow files in root of user data
* common mods subscription state between ugc and remote storage

* ugc: implement SetUserItemVote(), GetUserItemVote(), AddItemToFavorites(), RemoveItemFromFavorites(), favorite mods list is now save in `favorites.txt` in the user data folder

* ugc: make sure returned mod folder from GetItemInstallInfo() is null terminated & validate arg
2024-01-20 18:46:43 +02:00
otavepto
0d1e54e9a2 * a working impl to bridge ugc/remote_storage as suggested by Detanup01
* edits by Kola124 + other changes in the settings parser

* random ugc mod handle at object creation

* file size using std::filesystem + fix warnings + some print + arg validation
2024-01-20 18:46:43 +02:00
Detanup01
4afd10219d Update settings_parser.cpp
hopefully works
2024-01-20 18:46:43 +02:00
Detanup01
7f099ed0ad Update settings_parser.cpp
Fixed issue
2024-01-20 18:46:43 +02:00
Detanup01
146c01a9c3 Update settings_parser.cpp
adding code from recommended PR
2024-01-20 18:46:43 +02:00
Detanup01
0f002f7ef9 Update steam_ugc.h
forgot this one
2024-01-20 18:46:43 +02:00
Detanup01
96005c48ea Update settings.cpp 2024-01-20 18:46:43 +02:00
Detanup01
03f9da07cb Update steam_ugc.h
introducing temporary thing to apps can see its good to let the file tru (will not be invalid!)

- GetItemDownloadInfo implementation
2024-01-20 18:46:43 +02:00
Detanup01
0bc7438257 Update steam_remote_storage.h
better fprintf
2024-01-20 18:46:43 +02:00
Detanup01
8ad0fc4aa2 Update steam_ugc.h
Adding this field for future todo
2024-01-20 18:46:43 +02:00
Detanup01
b4e70b9778 Update steam_remote_storage.h
soem more debug
2024-01-20 18:46:43 +02:00
Detanup01
1bdd540498 Update steam_remote_storage.h
Added better version if this.
Now support from reading mods and using the mods file
2024-01-20 18:46:43 +02:00
otavepto
ab99591483 stub for appticket 2024-01-19 04:28:03 +02:00
otavepto
0358bcae89 parse the crash printer path from config file 2024-01-19 03:51:44 +02:00
otavepto
43ce82bf9c fix compilation error + some print messages 2024-01-05 22:10:30 +02:00
otavepto
54af73788b print more missing old interfaces + some consistency 2024-01-05 22:10:30 +02:00
otavepto
c37299013c consistency with interfaces are accessed/casted 2024-01-05 22:10:30 +02:00
Detanup01
e221d8e1d2 Fix Replace 2024-01-05 17:03:03 +02:00
otavepto
dfc55067e2 static early purchase time 2023-12-28 02:15:09 +02:00
otavepto
440d8335e2 fixed a bunch of includes 2023-12-28 01:30:46 +02:00
otavepto
aa03e94378 relocate dll .h files 2023-12-28 01:30:46 +02:00
otavepto
4eb4f8e0fc update some includes to be relative to current dir 2023-12-28 01:30:46 +02:00
otavepto
ce9b957c3d fixed warning in auth when building with clang (dammit!) 2023-12-25 18:30:44 +02:00
otavepto
0766282e00 some output formatting 2023-12-25 18:30:44 +02:00
otavepto
8d9c91b0f2 fix the includes in auth.h to point at mbdedtls in a relative manner 2023-12-25 18:30:44 +02:00
otavepto
9c927c01f6 fixed warnings in auth.h 2023-12-25 04:09:49 +02:00
otavepto
6650858e24 disable another warning message after rebase 2023-12-25 04:09:49 +02:00
otavepto
91d470a358 fixed all incorrect usages of NULL in place of a decimal number + removed compiler flags: -Wno-int-to-void-pointer-cast and -Wno-null-conversion 2023-12-25 04:09:49 +02:00
otavepto
1b04526d9d fixed all printf warnings for Linux & Windows 2023-12-25 04:09:49 +02:00
otavepto
4121101400 also allow setting the mod "score" in the mods.json 2023-12-25 01:47:45 +02:00
otavepto
9822f4d766 allow overriding mod path & mod preview_url in the mods.json file, suggested by remelt from: viewtopic.php?p=2964432#p2964432 2023-12-25 01:47:45 +02:00
otavepto
555bafae0b use the index argument to grab the preview URL from UGC query result, thanks to remelt from: viewtopic.php?p=2964432#p2964432 2023-12-25 01:47:32 +02:00
otavepto
1c84f2c324 use a global ticket counter for GC struct 2023-12-24 14:33:40 +02:00
otavepto
b5923696cd wrong buffer! 2023-12-24 14:33:40 +02:00
otavepto
95fe01ef9f updated Auth_Data serializtion method to add a signature to the data 2023-12-24 14:33:40 +02:00
otavepto
a626470846 refactored the serializatio of Auth_Data 2023-12-24 14:33:40 +02:00
a
48a8ada43f very minor refactoring to Auth_Data 2023-12-24 14:33:40 +02:00
a
c5ce7ad44b completely refactor the serialization of AppTicket
+ catch objects by reference instead of by value in for loops: `for (DLC &dlc : DLCs)` vs `for (DLC dlc : DLCs)`

+ rely on C/C++ standard sizes instead of SDK definitions `uint16_t` vs `uint16` since the data sizes are very important

+ added more comments explaining the reasoning for any special handling

+ added comments exaplaining the layout of the data
2023-12-24 14:33:40 +02:00
a
e379220e16 completely refactor the serialization of AppTicketGC
+ avoid any magical numbers as much as possible & calculate the required size via sizeof()

+ use a macro to serialize a single field & increment the pointer at the same time

+ added some more debug statements
2023-12-24 14:33:40 +02:00
a
342d0a27b5 fixed is a sneaky instatnt memory deallocation, check this for details: viewtopic.php?p=2962649#p2962649 2023-12-24 14:33:40 +02:00
a
0e584aa09c hide these fields since they're constant for now, to make it clear for external callers that these are not meant to change 2023-12-24 14:33:40 +02:00
a
8b4914a684 use standard fixed-size types instead of SDK types since the size of the data is important, to avoid any magic compiler definitions (love C++) 2023-12-24 14:33:40 +02:00
a
e8f64faf17 add a new serialization method to DLC struct 2023-12-24 14:33:40 +02:00
a
af86d6efc2 TODO notes for later, if needed 2023-12-24 14:33:40 +02:00
a
355537bb19 cache the usage of user ID, for clarity 2023-12-24 14:33:40 +02:00
a
85c98a5933 avoid incrementing the counter beyond the DLC count 2023-12-24 14:33:40 +02:00
a
205d88b204 + used std::chrono to set the expiration time of the ticket instead of hardcoded numbers, for clarity. isn't 24 hours a very long time?
+ set TimeSinceStartup from the new startup_timer, which starts counting when the .dll/.so is loaded in memory, currently using the amount of seconds, not sure if this is correct though
2023-12-24 14:33:40 +02:00
a
7b4d447553 use a helper macro to set IP4, for clarity 2023-12-24 14:33:40 +02:00
a
20d5252e9c additional sanity check in InitiateGameConnection() + print input data address 2023-12-24 14:33:40 +02:00
a
adeb14f364 check for invalid data pointer in GetAuthSessionTicket() 2023-12-24 14:33:40 +02:00
a
23c435bfea moved functions around for a clearer context 2023-12-24 14:33:40 +02:00
a
681fbc4ecb deprecate the old auth implementation in base.cpp/.h 2023-12-24 14:33:40 +02:00
Detanup01
b697c8bd2d All Auth token support 2023-12-24 14:33:40 +02:00
otavepto
c9e653fee7 use an obnoxious name for the file handle variable used in the PRINT_DEBUG macro to avoid collisions, in the caller has a variable with same name 2023-12-21 19:33:05 +02:00
otavepto
e28752420a cleanup the settings parser code, split into functions 2023-12-21 19:33:05 +02:00
otavepto
cf41523751 refactor includes order + add new helper function to keep yielding the thread for a given amount of time 2023-12-21 19:33:05 +02:00
otavepto
22470b5ab9 fixed printf specifier to avoid the warnings spam 2023-12-20 06:14:23 +02:00
otavepto
4fb6dcb3fa + learned the lesson, lock the global mutex in different other places just to be on the safe side, after lego 2k I am hesitent about all APIs, will this slow things down?
+ refactor some debug messages
2023-12-20 05:32:17 +02:00
otavepto
1333168d4a basic implementation for RequestAppProofOfPurchaseKey() and RequestAllProofOfPurchaseKeys() 2023-12-20 05:30:21 +02:00
otavepto
30c5b4eaa0 a simple implementation for GetEarliestPurchaseUnixTime() 2023-12-20 05:30:21 +02:00
otavepto
7bf9564005 current app shouldn't be a DLC right? 2023-12-20 05:30:21 +02:00
otavepto
9393518dfa check for invalid app ID uint32_max in different other places 2023-12-20 05:30:21 +02:00
otavepto
8289ec81a7 + fixed the implementation of BIsAppInstalled(), it must lock the global mutex since it is thread-safe, otherwise it will cause starvation and the current thread wion't yield, which triggers some games
+ even more accurate behavior for BIsAppInstalled(), reject app ID if it was in the DLC list and isUnlockAllDlc was false

+ citing the source for app id 0
2023-12-20 05:30:21 +02:00
otavepto
5c8a57e7af more accurate implementation for BGetSessionClientResolution 2023-12-20 05:30:21 +02:00
otavepto
d02f32327e more accurate implementation for Steam_Client::BReleaseSteamPipe(), return true if the pipe was released successfully 2023-12-20 05:30:21 +02:00
otavepto
f397f73644 add missing env var "SteamOverlayGameId" to steam_client and client_loader 2023-12-20 05:30:21 +02:00
otavepto
f83d930e7b added a timer + counter for reference, currently used to print timestamp in debug log 2023-12-20 05:30:21 +02:00
otavepto
ca043837d9 consistent debug log location, for games that change cwd multiple times while running 2023-12-20 05:30:21 +02:00
otavepto
6ed6a0a04b + changed the behavior of GetCurrentBetaName() to comply with the docs, might break stuff
+ allow customizing the behavior via is_beta_branch.txt + force_branch_name.txt config files
2023-12-18 05:45:21 +02:00
otavepto
fa8f594207 + more accurate implementation for BIsAppInstalled, it now rejects uint32_max
+ allow behavior customizization via installed_app_ids.txt config file

+ limit/lock list of installed apps on an empty file (similar to dlc.txt)
2023-12-18 05:45:21 +02:00