TCNOco / TcNo-Acc-Switcher

A Super-fast account switcher for Steam, Battle.net, Epic Games, Origin, Riot, Ubisoft and many others!
GNU General Public License v3.0
1.8k stars 120 forks source link

[Feature Request] Add Jagex Launcher (Runescape & Oldschool Runescape) #399

Closed bomkamp closed 3 months ago

bomkamp commented 3 months ago

Feature Request - Jagex Launcher


Hey!! I love this tool so much, so to start, thank you for building & maintaining such an awesome tool. I've been poking here & there into this repo's issues over the last few months to see if anybody else has requested this, but I haven't been able to find anything for this so I was hoping to check if you had any appetite for implementing it 🙏🏻.

Apologies for the absolute mountain of details below, I wanted to help provide as much context as I possibly could. If this feature request doesn't make sense for this library, feel free to skip reading anything past here. Thank you again!

Background


Relatively recently, Oldschool Runescape & Runescape3 moved to parent accounts by using a new launcher, the Jagex Launcher, that allow you to easily switch between up to 20 in-game characters.

Overall, it's an amazing change in terms of security & ease-of-use (if you have one parent account). However, if you have more than 20 characters and need multiple parent accounts & it requires logging in with multi-factor authorization constantly to play on multiple characters from different accounts.

Example Use-Case


For example, if I want to play on two characters at the same time, I have to:

  1. Sign-in with user/pass & complete multi-factor authorization for parent account PA-1
    • These credentials are stored/cached locally, so you can skip this step if you haven't changed accounts between now and the last login
  2. Start a game client using one of my characters from PA-1
  3. Sign-out of the parent client
  4. Sign-in with user/pass & complete multi-factor authorization for parent account PA-2
  5. Start a game client using one of my characters from PA-2
  6. (Future) Next time my machine needs to update, I have to reboot from an uninstall, power drops, etc. I have to repeat all of these steps to get my game-client(s) back open.

Additional Context/Details


I figured that I will toss them in here so that if it does get picked up, I can help out with any learnings I may already have from trying to work this out. I have tried to a few things myself which may provide some (hopefully) helpful context:

Running New Launchers as an Alternative Local User Account

I created an alternative user profile on my machine, installed the launcher in the profile, and I run the task as the other user which caches the credentials long-term.

This would work fine, however, due to it being a process owned by another user:

  1. I can't open HTTP/Web links from in-game or the game-client
  2. Typically, all of the configuration, settings, screenshots, etc. between characters (regardless of parent account) would all be bundled together. But, given the multiple user profiles, things constantly get out-of-sync & I've accidentally overwritten changes multiple times.

Scripts to Rename & Set Credentials File(s)

I also tried to manually implement a launcher start script that would rename credentials file(s) & set them up per account prior to starting-up the launcher. This was unsuccessful...

I do feel like it should be possible as I was easily able to locate credentials/account files (maybe not all of them), however, I have no experience at all with Windows OS Development (Tasks, Powershell/Cmd/Terminal, etc.) and struggled a lot on that. I suppose I could come back around in TypeScript/Python if this feature doesn't make sense for this library.


Thank you again!

TCNOco commented 3 months ago

Hey thanks for this suggestion. I'm looking into where the login is saved/cached on a sandbox system here using https://github.com/TCNOco/TcNo-Acc-Switcher/wiki/Help-code-a-platform...

I've found that Program Files stays the same. %LocalAppData%/jagex launcher does change and it seems everything is stored here

However deleting the localappdata folder does log you out, replacing with the older copy doesn't work, and swapping from logged in to a copy from a fresh install to a new account doesn't seem to work -- all require a login

There is another file somewhere else causing the account caching to stop working. Possibly a registry entry. I'm struggling to find this but it is somewhere

TCNOco commented 3 months ago

WindowsSandboxClient_5gxExArmFt Having luck with switching accounts, however, it seems the launcher stores logins in some folders like the Microsoft Credentials folder, which is OK, but the names seem randomized. It may be hard to get this switcher working without messing with other apps that also use these folders. More fine-tuning is needed but so far things are promising.

The folder %LocalAppData%\Microsoft\Credentials needs to have the correct file swapped when accounts are switching, but as these are all randomly named, and can be used by other programs... I'm not sure how I'll handle this...

TCNOco commented 3 months ago

OK I need you to test this as well. It seems %LocalAppData%\Microsoft\Credentials\C5F6B4FF052E05B4F26961945E953169 is where the Jagex Launcher stores its logged in account, as well as the user account folder. I've put together a new Platforms.json file that you can drop in the TcNo Account Switchers install folder and test it in-app: Platforms.json

Download this and drop it (likely) in C:\Program Files\TcNo Account Switcher and replace the existing one. Relaunch the TcNo Account Switcher, click Manage Platforms and add the new "Jagex" option. Go back to the main screen and see if you can click it, then Save Current, Add New, sign in and Save Current the second account. Let me know if switching between them works.

Some apps have this seemingly random string of text for where it saves logins, and odds are it's not going to change -- but it may. If this is the same on your system as it is on mine and a virtual machine I test on, then odds are it's the same for everyone.

bomkamp commented 3 months ago

IT WORKS!!! YOU ARE AWESOME!

I just tested what you asked, I added both of my accounts and was able to switch between them seamlessly. I went back & forth multiple times to be certain. I also verified that the credentials path on my machine is the same as well (%LocalAppData%\Microsoft\Credentials\C5F6B4FF052E05B4F26961945E953169).

Thank you soooo much for being willing to add this & adding it SO QUICKLY!

Let me know if there's anything else that I can test for you. I'll be on the lookout for a new release 😀

bomkamp commented 3 months ago

BTW, if it's helpful, this is the Jagex Logo (I just found a random site with an SVG of it for reference)

TCNOco commented 3 months ago

The platform should be downloaded in an autoupdate sometime soon, with an icon. I haven't handled caching when checking the Platforms.json file on GitHub... So it may take some time to download for everyone, but it is there :)

bomkamp commented 3 months ago

The platform should be downloaded in an autoupdate sometime soon, with an icon. I haven't handled caching when checking the Platforms.json file on GitHub... So it may take some time to download for everyone, but it is there :)

Again, you are awesome for how quickly you've solved this. I spent way more than a couple of hours trying to fix this on my own, super super impressive work.

Thank you again!!!