├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── asked-for-password-every-time---x-platform--steam--epic----.md │ ├── blank-issue--comment-or-suggestion.md │ └── bug_report.md └── workflows │ └── dotnet-desktop.yml ├── .gitignore ├── CONTRIBUTING.md ├── DISCLAIMER.md ├── Installer ├── Installer.cpp ├── Installer.rc ├── Installer.vcxproj ├── Installer.vcxproj.DotSettings ├── Installer.vcxproj.filters ├── progress_bar.cpp ├── progress_bar.hpp ├── resource.h ├── runtime_check.hpp ├── tcno.hpp └── versions.h ├── LICENSE ├── PRIVACY.md ├── README.md ├── TcNo Account Switcher ├── Images │ ├── LockScreenLogo.scale-200.png │ ├── SplashScreen.scale-200.png │ ├── Square150x150Logo.scale-200.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── StoreLogo.png │ └── Wide310x150Logo.scale-200.png ├── Package.appxmanifest └── TcNo-Acc-Switcher.Packager.wapproj ├── TcNo-Acc-Switcher-Client ├── App.xaml ├── App.xaml.cs ├── AssemblyInfo.cs ├── CefHandlers.cs ├── CustomMessageBox.xaml ├── CustomMessageBox.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── PostBuild.bat ├── PostBuildUpdate.ps1 ├── Properties │ └── launchSettings.json ├── Steam │ └── SteamKeys.cs ├── TcNo-Acc-Switcher-Client.csproj ├── VerifySignatures.ps1 ├── favicon.ico ├── inc │ └── TcNo-Acc-Switcher.runtimeconfig.json └── sign.bat ├── TcNo-Acc-Switcher-Globals ├── Extensions.cs ├── Files.cs ├── Folders.cs ├── Globals.cs ├── IconToPng.cs ├── Lang.cs ├── Logger.cs ├── Processes.cs ├── Registry.cs ├── Strings.Designer.cs ├── Strings.resx ├── TcNo-Acc-Switcher-Globals.csproj ├── Tray.cs ├── Web.cs ├── Windows.cs └── favicon.ico ├── TcNo-Acc-Switcher-Server ├── .config │ └── dotnet-tools.json ├── Additional Licenses.txt ├── App.razor ├── Converters │ └── SteamIdConvert.cs ├── Data │ ├── AppData.cs │ ├── AppSettings.cs │ ├── AppStats.cs │ ├── BasicPlatforms.cs │ ├── BasicStats.cs │ ├── GenericFunctions.cs │ ├── Lang.cs │ └── Settings │ │ ├── Basic.cs │ │ └── Steam.cs ├── Disclaimer.txt ├── GameStats.json ├── GlobalSuppressions.cs ├── Pages │ ├── Basic │ │ ├── BasicSwitcherBase.cs │ │ ├── BasicSwitcherFuncs.cs │ │ ├── Index.razor │ │ ├── Settings.razor │ │ └── Settings.razor.cs │ ├── Error.cshtml │ ├── General │ │ ├── Classes │ │ │ ├── IconFactory.cs │ │ │ └── Shortcut.cs │ │ ├── GeneralFuncs.cs │ │ ├── GeneralInvocableFuncs.cs │ │ ├── PathPicker.cs │ │ └── TextEditor.razor │ ├── Index.razor │ ├── Index.razor.cs │ ├── Login.razor │ ├── Platforms │ │ ├── Settings.razor │ │ └── Settings.razor.cs │ ├── PreviewCss │ │ ├── PreviewCss.razor │ │ └── PreviewCss.razor.cs │ ├── Settings.razor │ ├── Settings.razor.cs │ ├── Steam │ │ ├── AdvancedClearing.razor │ │ ├── AdvancedClearing.razor.cs │ │ ├── Index.razor │ │ ├── Index.razor.cs │ │ ├── Settings.razor │ │ ├── Settings.razor.cs │ │ ├── SteamSwitcherBase.cs │ │ └── SteamSwitcherFuncs.cs │ └── _Host.cshtml ├── Platforms.json ├── Platforms │ └── Discord │ │ ├── Username.html │ │ └── Username.js ├── Privacy Policy.txt ├── Program.cs ├── Properties │ └── launchSettings.json ├── Resources │ ├── af-ZA.yml │ ├── ar-SA.yml │ ├── bg-BG.yml │ ├── ca-ES.yml │ ├── cs-CZ.yml │ ├── da-DK.yml │ ├── de-CH.yml │ ├── de-DE.yml │ ├── desktop.ini │ ├── el-GR.yml │ ├── en-PT.yml │ ├── en-US.yml │ ├── es-ES.yml │ ├── fa-IR.yml │ ├── fi-FI.yml │ ├── fr-FR.yml │ ├── he-IL.yml │ ├── hi-IN.yml │ ├── hu-HU.yml │ ├── id-ID.yml │ ├── it-IT.yml │ ├── ja-JP.yml │ ├── ko-KR.yml │ ├── nl-NL.yml │ ├── no-NO.yml │ ├── pl-PL.yml │ ├── pt-BR.yml │ ├── pt-PT.yml │ ├── ro-RO.yml │ ├── ru-RU.yml │ ├── sk-SK.yml │ ├── sr-SP.yml │ ├── sv-SE.yml │ ├── th-TH.yml │ ├── tr-TR.yml │ ├── uk-UA.yml │ ├── vi-VN.yml │ ├── zh-CN.yml │ └── zh-TW.yml ├── Shared │ ├── Accounts │ │ ├── Account.cs │ │ ├── AccountItem.razor │ │ └── AccountList.razor │ ├── ChooseLanguage.razor │ ├── ContextMenu │ │ ├── ContextMenu.razor │ │ ├── ContextMenuItem.razor │ │ ├── MenuBuilder.cs │ │ └── MenuItem.cs │ ├── CustomExtensions.cs │ ├── DynamicStylesheet.razor │ ├── DynamicStylesheet.razor.cs │ ├── Headerbar.razor │ ├── MainLayout.razor │ ├── Modal.razor │ └── SharedSettings.razor ├── Startup.cs ├── Steamworks.NET.dll ├── TcNo-Acc-Switcher-Server.csproj ├── TcNo-Acc-Switcher-Server.sln ├── TcNoAccSw-Icon-100x100.png ├── _Imports.razor ├── appsettings.Development.json ├── appsettings.json ├── compilerconfig.json ├── compilerconfig.json.defaults ├── themes │ ├── Dracula_Cyan │ │ ├── info.yaml │ │ └── style.scss │ ├── Monokai │ │ ├── README.md │ │ ├── info.yaml │ │ └── style.scss │ ├── Nord │ │ ├── info.yaml │ │ └── style.scss │ ├── Old_Default │ │ ├── info.yaml │ │ └── style.scss │ └── Tokyo_Night │ │ ├── README.md │ │ ├── info.yaml │ │ ├── style.css │ │ ├── style.css.map │ │ └── style.scss └── wwwroot │ ├── css │ ├── UI.css │ ├── UI.min.css │ ├── UI.scss │ ├── accent.css │ ├── acclist.css │ ├── acclist.min.css │ ├── acclist.scss │ ├── bootstrap │ │ ├── bootstrap.min.css │ │ └── bootstrap.min.css.map │ ├── context_menu.css │ ├── context_menu.min.css │ ├── context_menu.scss │ ├── font │ │ ├── Catamaran-VariableFont_wght.ttf │ │ └── Raleway-VariableFont_wght.ttf │ ├── fontawesome.all.min.css │ ├── modal.css │ ├── modal.min.css │ ├── modal.scss │ ├── notification.min.css │ ├── open-iconic │ │ ├── FONT-LICENSE │ │ ├── ICON-LICENSE │ │ └── font │ │ │ ├── css │ │ │ └── open-iconic-bootstrap.min.css │ │ │ └── fonts │ │ │ ├── open-iconic.eot │ │ │ ├── open-iconic.otf │ │ │ ├── open-iconic.svg │ │ │ ├── open-iconic.ttf │ │ │ └── open-iconic.woff │ ├── rtl.css │ ├── rtl.min.css │ ├── rtl.scss │ ├── scrollbar.css │ ├── settings.css │ ├── settings.min.css │ ├── settings.scss │ ├── site.css │ ├── site.min.css │ └── site.scss │ ├── favicon.ico │ ├── img │ ├── BasicDefault.png │ ├── BattleNetDefault.png │ ├── QuestionMark.jpg │ ├── TcNo500.png │ ├── TcNoAccSw-Icon-100x100.png │ ├── TcNo_Logo_Flat.svg │ ├── icons │ │ ├── ico_BattleNetDamageIcon.svg │ │ ├── ico_BattleNetSupportIcon.svg │ │ ├── ico_BattleNetTankIcon.svg │ │ ├── ico_discord.svg │ │ ├── ico_doc.svg │ │ ├── ico_github.svg │ │ ├── ico_kofi.svg │ │ ├── ico_networking.svg │ │ ├── ico_patreon.svg │ │ ├── max-k-10.png │ │ ├── max-k-12.png │ │ ├── max-k-15.png │ │ ├── max-k-20.png │ │ ├── max-k-24.png │ │ ├── max-k-30.png │ │ ├── max-w-10.png │ │ ├── max-w-12.png │ │ ├── max-w-15.png │ │ ├── max-w-20.png │ │ ├── max-w-24.png │ │ ├── max-w-30.png │ │ ├── min-k-10.png │ │ ├── min-k-12.png │ │ ├── min-k-15.png │ │ ├── min-k-20.png │ │ ├── min-k-24.png │ │ ├── min-k-30.png │ │ ├── min-w-10.png │ │ ├── min-w-12.png │ │ ├── min-w-15.png │ │ ├── min-w-20.png │ │ ├── min-w-24.png │ │ ├── min-w-30.png │ │ ├── restore-k-10.png │ │ ├── restore-k-12.png │ │ ├── restore-k-15.png │ │ ├── restore-k-20.png │ │ ├── restore-k-24.png │ │ ├── restore-k-30.png │ │ ├── restore-w-10.png │ │ ├── restore-w-12.png │ │ ├── restore-w-15.png │ │ ├── restore-w-20.png │ │ ├── restore-w-24.png │ │ └── restore-w-30.png │ ├── noise.png │ └── platform │ │ ├── Albion Online.svg │ │ ├── Arena Breakout Infinite.svg │ │ ├── BattleNet.svg │ │ ├── Delta Force Hawk Ops.svg │ │ ├── Discord Canary.svg │ │ ├── Discord PTB.svg │ │ ├── DiscordDefault.png │ │ ├── EA Desktop.svg │ │ ├── Epic Games.svg │ │ ├── EpicDefault.png │ │ ├── Escape from Tarkov.svg │ │ ├── GOG Galaxy.svg │ │ ├── GeForce Now.svg │ │ ├── Genshin Impact.svg │ │ ├── Honkai StarRail.svg │ │ ├── Jagex.svg │ │ ├── Magic Arena.svg │ │ ├── OBS Studio.svg │ │ ├── Oculus.svg │ │ ├── PS Remote Play.svg │ │ ├── Riot Games.svg │ │ ├── RiotDefault.png │ │ ├── Rockstar.svg │ │ ├── discord.svg │ │ ├── glass.svg │ │ ├── origin.svg │ │ ├── steam.svg │ │ └── ubisoft.svg │ ├── js │ ├── Headerbar.js │ ├── Notification.min.js │ ├── WebFuncs.js │ ├── ace │ │ ├── ace.js │ │ ├── ext-beautify.js │ │ ├── ext-code_lens.js │ │ ├── ext-elastic_tabstops_lite.js │ │ ├── ext-emmet.js │ │ ├── ext-error_marker.js │ │ ├── ext-keybinding_menu.js │ │ ├── ext-language_tools.js │ │ ├── ext-linking.js │ │ ├── ext-modelist.js │ │ ├── ext-options.js │ │ ├── ext-prompt.js │ │ ├── ext-rtl.js │ │ ├── ext-searchbox.js │ │ ├── ext-settings_menu.js │ │ ├── ext-spellcheck.js │ │ ├── ext-split.js │ │ ├── ext-static_highlight.js │ │ ├── ext-statusbar.js │ │ ├── ext-textarea.js │ │ ├── ext-themelist.js │ │ ├── ext-whitespace.js │ │ ├── keybinding-emacs.js │ │ ├── keybinding-sublime.js │ │ ├── keybinding-vim.js │ │ ├── keybinding-vscode.js │ │ ├── mode-autohotkey.js │ │ ├── mode-batchfile.js │ │ ├── mode-json.js │ │ ├── mode-text.js │ │ ├── mode-yaml.js │ │ ├── snippets │ │ │ ├── autohotkey.js │ │ │ ├── batchfile.js │ │ │ ├── json.js │ │ │ ├── text.js │ │ │ └── yaml.js │ │ └── worker-json.js │ ├── battlenet │ │ └── ManageIgnored.js │ ├── bootstrap.bundle.min.js │ ├── bootstrap.bundle.min.js.map │ ├── context_menu.js │ ├── hotkeys.min.js │ ├── html5sortable.min.js │ ├── interop.js │ └── jquery.3.6.0.min.js │ ├── prog_icons │ └── program.ico │ └── webfonts │ ├── fa-brands-400.eot │ ├── fa-brands-400.svg │ ├── fa-brands-400.ttf │ ├── fa-brands-400.woff │ ├── fa-brands-400.woff2 │ ├── fa-regular-400.eot │ ├── fa-regular-400.svg │ ├── fa-regular-400.ttf │ ├── fa-regular-400.woff │ ├── fa-regular-400.woff2 │ ├── fa-solid-900.eot │ ├── fa-solid-900.svg │ ├── fa-solid-900.ttf │ ├── fa-solid-900.woff │ └── fa-solid-900.woff2 ├── TcNo-Acc-Switcher-Tray ├── Program.cs ├── Properties │ ├── Resources.Designer.cs │ ├── Resources.resx │ └── launchSettings.json ├── Resources │ └── icon.ico ├── TcNo-Acc-Switcher-Tray.csproj └── favicon.ico ├── TcNo-Acc-Switcher-Updater ├── App.xaml ├── App.xaml.cs ├── AssemblyInfo.cs ├── Logger.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Properties │ └── launchSettings.json ├── TcNo-Acc-Switcher-Updater.csproj └── favicon.ico ├── TcNo-Acc-Switcher.sln ├── TcNo-Acc-Switcher.sln.DotSettings ├── _Updater_Wrapper ├── _Updater_Wrapper.vcxproj ├── _Updater_Wrapper.vcxproj.DotSettings ├── _Updater_Wrapper.vcxproj.filters ├── _Wrapper.cpp ├── _Wrapper.rc └── resource.h ├── appveyor.yml ├── crowdin.yml ├── other ├── NSIS │ ├── img │ │ ├── Convert.bat │ │ ├── HeaderImage.afphoto │ │ ├── HeaderImage.bmp │ │ ├── HeaderImage.png │ │ ├── SideBanner.afphoto │ │ ├── SideBanner.bmp │ │ ├── SideBanner.png │ │ └── icon.ico │ ├── nsis-build-x64.nsi │ └── nsis7zplugin.ps1 ├── img │ ├── Banner.png │ ├── DownloadBeta.png │ ├── DownloadLatest.png │ ├── DownloadLatestNEW.png │ ├── FAQButton.png │ ├── JetBrains_Banner.png │ ├── Program_Icons │ │ ├── Icons.afphoto │ │ ├── Icons.svg │ │ └── Question.svg │ ├── TcNoAccSw-Icon-1000x1000.png │ ├── TcNoAccSw-Icon-100x100.png │ ├── TcNoAccSw-Icon.svg │ ├── Themes.png │ ├── WikiButton.png │ ├── icon.ico │ ├── icon │ │ ├── icon16.png │ │ ├── icon256.png │ │ ├── icon32.png │ │ └── icon48.png │ ├── web.svg │ └── youtube.svg ├── package-lock.json ├── package.json ├── tcno.co │ ├── api │ │ ├── crowdin │ │ │ └── index.php │ │ ├── index.php │ │ └── update │ │ │ └── index.php │ ├── net_update.php │ ├── net_version.php │ ├── update.php │ └── version.php └── upload-to-ftp.js ├── runas ├── Program.cs └── runas.csproj └── updateversion.ps1 /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.cs] 2 | 3 | # CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. 4 | dotnet_diagnostic.CS8632.severity = silent 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: TCNOco 4 | patreon: TroubleChute 5 | ko_fi: tcnoco 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/asked-for-password-every-time---x-platform--steam--epic----.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Asked for password every time - X Platform (Steam, Epic...) 3 | about: Switching accounts, yet ALWAYS asked for password? 4 | title: "(X platform) asks for a password every switch" 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | Before you open an issue, please make sure this is actually an issue. What do I mean? 11 | Being asked for a password every time you switch is likely user error, or something on your computer that is otherwise causing this issue. If a platform has updated, causing this error, it will be widespread. 12 | 13 | 1. Check the [Wiki - I need to enter a password every time I switch](https://github.com/TcNobo/TcNo-Acc-Switcher/wiki/FAQ---More-Info#i-need-to-enter-a-password-every-time-i-switch) for solutions on what could be going wrong. 14 | 2. If the above article was no use to you, and you're still experiencing an issue, you can open an issue. However, if this issue is not widespread, and caused by an update: It is more than likely A. Your computer, software running on it or its configuration. B. A configuration error or unique issue that affects the TcNo Account Switcher. Or C. User-error. 15 | 16 | I will assist to the best of my ability, but if the issue isn't widespread it's not something I can easily solve most of the time - **I assume you have already tried the steps mentioned in the FAQ before opening an issue**, so PLEASE make sure you have. 17 | 18 | If you have followed the FAQ above, you may open an issue on this topic. Please make sure to include as much relevant information as possible to help speed up the process. I will likely ask for more info, so make sure to check your email, or this page once in a while for updates. 19 | 20 | -------------------------------------------------------------- 21 | Remove all the text in this issue before entering your own information. 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/blank-issue--comment-or-suggestion.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Blank issue, comment or suggestion 3 | about: Open a new issue without a template. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen, if not already obvious. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | If an error bar shows at the bottom of the window, press `Ctrl+Shift+I` and go to the `Console` tab where you'll likely find an error. Screenshot this and attach it here. You are free to blank out personal info (if any, but this is unlikely) 26 | 27 | **Desktop (please complete the following information):** 28 | - OS: [e.g. Win 10 21H1] 29 | 30 | **Additional context** 31 | Add any other context about the problem here. 32 | -------------------------------------------------------------------------------- /.github/workflows/dotnet-desktop.yml: -------------------------------------------------------------------------------- 1 | name: Public GitHub build 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | logLevel: 7 | description: 'Log level' 8 | required: true 9 | default: 'warning' 10 | tags: 11 | description: "Description:" 12 | default: "Manual build from source" 13 | 14 | jobs: 15 | 16 | build: 17 | runs-on: windows-latest 18 | steps: 19 | 20 | - name: Get current date 21 | id: date 22 | run: echo "::set-output name=date::$(date +'%Y-%m-%d')" 23 | 24 | - name: Checkout 25 | uses: actions/checkout@v2 26 | with: 27 | fetch-depth: 0 28 | 29 | # Install the .NET Core workload 30 | - name: Install .NET Core 31 | uses: actions/setup-dotnet@v1 32 | with: 33 | dotnet-version: 5.0.x 34 | 35 | # Restore the application to populate the obj folder with RuntimeIdentifiers 36 | - name: Restore the application 37 | run: dotnet restore 38 | 39 | # Build Debug 40 | - name: Build Debug 41 | run: dotnet build TcNo-Acc-Switcher-Client\TcNo-Acc-Switcher-Client.csproj --configuration Debug 42 | 43 | # Build Debug 44 | - name: Build Release 45 | run: dotnet build TcNo-Acc-Switcher-Client\TcNo-Acc-Switcher-Client.csproj --configuration Release 46 | 47 | # Debug 48 | - name: Upload Debug 49 | uses: actions/upload-artifact@v2 50 | with: 51 | name: ${{ steps.date.outputs.date }} Debug 52 | path: TcNo-Acc-Switcher-Client\bin\Debug\net5.0-windows 53 | 54 | # Release 55 | - name: Upload Release 56 | uses: actions/upload-artifact@v2 57 | with: 58 | name: ${{ steps.date.outputs.date }} Release 59 | path: TcNo-Acc-Switcher-Client\bin\Release\net5.0-windows 60 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Welcome 2 | 3 | Thank you for contributing to the TcNo Account Switcher! If you have any questions or doubts, don't be afraid to send them my way. I appreciate all contributions, and I am looking forward to fostering an open, transparent, and collaborative environment. 4 | 5 | Before contributing, I encourage you to also read or [LICENSE](https://github.com/TcNobo/TcNo-Acc-Switcher/blob/master/LICENSE), also found in this repository. If you have any inquiries or questions not answered by the content of this repository, feel free to [join the Discord](https://s.tcno.co/AccSwitcherDiscord) and ask in `#general-acc-switcher` under `TCNO ACCOUNT SWITCHER`. 6 | 7 | ## Creating issues 8 | 9 | If you have a feature suggestion or want to report a bug, you are welcome to create an issue, or post it in `#bug-report` on the Discord. 10 | 11 | Guidelines: 12 | 13 | - Avoid creating an issue if a similar one already exists. Look through existing open and closed issues first. 14 | - Keep your issue focused on one specific problem. If you have multiple suggestions or bug reports, please create separate issues for them. 15 | - Provide a descriptive title for your issue. Don't use generic titles like "A few suggestions" or "Not working". 16 | - Provide more context in the body of the issue. If relevant, attach screenshots or screen recordings. These are incredibly important as they help me understand what's going wrong and work with it faster. 17 | - Remain civil and respectful when participating in discussions. 18 | 19 | ## Creating pull requests 20 | 21 | If you want to contribute code to the project, you can do so by creating a pull request. 22 | 23 | Guidelines: 24 | 25 | - Make sure that there is an existing issue that describes the problem solved by your pull request. If there isn't one, please create it first. 26 | - Add a comment to the issue indicating that you want to submit a pull request for it. This can be a good opportunity to discuss possible solutions, finalize requirements, or ask questions. 27 | - Keep your pull request focused and as small as possible. If you want to contribute multiple unrelated changes, please create separate pull requests for them. 28 | - Follow the coding style and conventions already established by the project. When in doubt which style to use, ask in comments to your pull request. 29 | - If you want to start a discussion regarding a specific change you made, add a review comment to your own code. This can be used to highlight something important or to seek input from others. 30 | - Again, Discord is a good place to contact me if you'd like some more information on working with the project. I've already worked with a few people, and would be happy for that list of contributors to grow. 31 | 32 | ## Building the project locally 33 | 34 | See: [Building from source code](https://github.com/TcNobo/TcNo-Acc-Switcher/wiki/Building-from-source-code) in the project's Wiki. 35 | -------------------------------------------------------------------------------- /DISCLAIMER.md: -------------------------------------------------------------------------------- 1 | # DISCLAIMER 2 | 3 | All trademarks and materials are the property of their respective owners and their licensors. This project is not affiliated 4 | with any companies referenced. This is not "Official" software or related to any companies mentioned. All it does is let you 5 | move your files around on your computer the same way you can. The use of names, icons and trademarks does not indicate 6 | endorsement of the trademark holder by this project or its creators, nor vice versa. They are only used to visually indicate 7 | which programs this project interacts with easily to the end-user. 8 | 9 | By enabling optional features that scrape the web for publically available information (such as limited game/profile statistics 10 | and other data), you understand and accept full responsibility for doing so on your own volition. If you appreciate accurate 11 | information, support the services providing it directly. The information collected is incredibly limited and is no replacement 12 | or competitor for sites scraped. 13 | 14 | I am not responsible for the contents of external links. 15 | For the rest of the disclaimer, refer to the License (GNU General Public License v3.0) file: 16 | https://github.com/TcNobo/TcNo-Acc-Switcher/blob/master/LICENSE - See sections like 15, 16 and 17, as well as GitHub's 17 | 'simplification' at the top of the above website. 18 | -------------------------------------------------------------------------------- /Installer/Installer.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/Installer/Installer.rc -------------------------------------------------------------------------------- /Installer/Installer.vcxproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | Cpp17 -------------------------------------------------------------------------------- /Installer/Installer.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | Source Files 23 | 24 | 25 | 26 | 27 | Header Files 28 | 29 | 30 | Header Files 31 | 32 | 33 | Header Files 34 | 35 | 36 | Header Files 37 | 38 | 39 | Header Files 40 | 41 | 42 | 43 | 44 | Resource Files 45 | 46 | 47 | 48 | 49 | Resource Files 50 | 51 | 52 | -------------------------------------------------------------------------------- /Installer/progress_bar.cpp: -------------------------------------------------------------------------------- 1 | #include "progress_bar.hpp" 2 | ProgressBar::ProgressBar() = default; 3 | 4 | ProgressBar::ProgressBar(unsigned long n_, const char* description_, std::ostream& out_) { 5 | n = n_; 6 | frequency_update = n_; 7 | description = description_; 8 | out = &out_; 9 | unit_bar = "="; 10 | unit_space = " "; 11 | desc_width = std::strlen(description); // character width of description field 12 | } 13 | void ProgressBar::SetFrequencyUpdate(unsigned long frequency_update_) { 14 | if (frequency_update_ > n) { 15 | frequency_update = n; // prevents crash if freq_updates_ > n_ 16 | } 17 | else { 18 | frequency_update = frequency_update_; 19 | } 20 | } 21 | void ProgressBar::SetStyle(const char* unit_bar_, const char* unit_space_) { 22 | unit_bar = unit_bar_; 23 | unit_space = unit_space_; 24 | } 25 | int ProgressBar::GetConsoleWidth() { 26 | CONSOLE_SCREEN_BUFFER_INFO buffer_info; 27 | GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &buffer_info); 28 | const int width = buffer_info.srWindow.Right - buffer_info.srWindow.Left; 29 | return width; 30 | } 31 | int ProgressBar::GetBarLength() const 32 | { 33 | // get console width and according adjust the length of the progress bar 34 | const int bar_length = static_cast((static_cast(GetConsoleWidth()) - desc_width - CHARACTER_WIDTH_PERCENTAGE) / 2.); 35 | return bar_length; 36 | } 37 | void ProgressBar::ClearBarField() const 38 | { 39 | for (int i = 0; i < GetConsoleWidth(); ++i) { 40 | *out << " "; 41 | } 42 | *out << "\r" << std::flush; 43 | } 44 | void ProgressBar::Progressed(unsigned long idx_) 45 | { 46 | try { 47 | if (idx_ > n) throw idx_; 48 | // determines whether to update the progress bar from frequency_update 49 | if ((idx_ != n) && (idx_ % (n / frequency_update) != 0)) return; 50 | // calculate the size of the progress bar 51 | const int bar_size = GetBarLength(); 52 | // calculate percentage of progress 53 | const double progress_percent = idx_ * TOTAL_PERCENTAGE / n; 54 | // calculate the percentage value of a unit bar 55 | const double percent_per_unit_bar = TOTAL_PERCENTAGE / bar_size; 56 | // display progress bar 57 | *out << " " << description << " ["; 58 | for (int bar_length = 0; bar_length <= bar_size - 1; ++bar_length) { 59 | if (bar_length * percent_per_unit_bar < progress_percent) { 60 | *out << unit_bar; 61 | } 62 | else { 63 | *out << unit_space; 64 | } 65 | } 66 | *out << "]" << std::setw(CHARACTER_WIDTH_PERCENTAGE + 1) << std::setprecision(1) << std::fixed << progress_percent << "%\r" << std::flush; 67 | } 68 | catch (unsigned long e) { 69 | ClearBarField(); 70 | std::cerr << "PROGRESS_BAR_EXCEPTION: _idx (" << e << ") went out of bounds, greater than n (" << n << ")." << std::endl << std::flush; 71 | } 72 | } -------------------------------------------------------------------------------- /Installer/progress_bar.hpp: -------------------------------------------------------------------------------- 1 | // TcNo Account Switcher - A Super fast account switcher 2 | // Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | // This program is free software: you can redistribute it and/or modify 4 | // it under the terms of the GNU General Public License as published by 5 | // the Free Software Foundation, either version 3 of the License, or 6 | // (at your option) any later version. 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU General Public License 13 | // along with this program. If not, see . 14 | 15 | // Goal of this project: 16 | // To allow users to start the program regardless of .NET version. 17 | // If .NET is missing > Open installer, then after install relaunch. 18 | 19 | #pragma once 20 | #ifndef _PROGRESS_BAR_ 21 | #define _PROGRESS_BAR_ 22 | #include 23 | #include 24 | #include 25 | #define TOTAL_PERCENTAGE 100.0 26 | #define CHARACTER_WIDTH_PERCENTAGE 4 27 | class ProgressBar { 28 | public: 29 | ProgressBar(); 30 | ProgressBar(unsigned long n_, const char* description_ = "", std::ostream& out_ = std::cerr); 31 | void SetFrequencyUpdate(unsigned long frequency_update_); 32 | void SetStyle(const char* unit_bar_, const char* unit_space_); 33 | void Progressed(unsigned long idx_); 34 | private: 35 | unsigned long n{}; 36 | unsigned int desc_width{}; 37 | unsigned long frequency_update{}; 38 | std::ostream* out{}; 39 | const char* description{}; 40 | const char* unit_bar{}; 41 | const char* unit_space{}; 42 | void ClearBarField() const; 43 | static int GetConsoleWidth(); 44 | int GetBarLength() const; 45 | }; 46 | #endif -------------------------------------------------------------------------------- /Installer/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Installer.rc 4 | // 5 | #define IDI_ICON1 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /Installer/versions.h: -------------------------------------------------------------------------------- 1 | // TcNo Account Switcher - A Super fast account switcher 2 | // Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | // This program is free software: you can redistribute it and/or modify 4 | // it under the terms of the GNU General Public License as published by 5 | // the Free Software Foundation, either version 3 of the License, or 6 | // (at your option) any later version. 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU General Public License 13 | // along with this program. If not, see . 14 | 15 | // Goal of this project: 16 | // To allow users to start the program regardless of .NET version. 17 | // If .NET is missing > Open installer, then after install relaunch. 18 | 19 | #pragma once 20 | #include 21 | 22 | inline std::string required_min_webview = "98.0", 23 | required_min_desktop_runtime = "8.0.8", 24 | required_min_aspcore = "8.0.8", 25 | required_min_vc = "14.30.30704"; 26 | 27 | const std::string w_runtime_name = "Microsoft WebView2 Runtime", 28 | w_runtime = "https://go.microsoft.com/fwlink/p/?LinkId=2124703", 29 | w_exe = "MicrosoftEdgeWebview2Setup.exe", 30 | 31 | d_runtime_name = "Microsoft .NET 8.0.8 Desktop Runtime", 32 | d_runtime = "https://dotnetcli.azureedge.net/dotnet/WindowsDesktop/8.0.8/windowsdesktop-runtime-8.0.8-win-x64.exe", 33 | d_exe = "windowsdesktop-runtime-8.0.8-win-x64.exe", 34 | 35 | a_runtime_name = "Microsoft ASP.NET Core 8.0.8 Runtime", 36 | a_runtime = "https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/8.0.8/aspnetcore-runtime-8.0.8-win-x64.exe", 37 | a_exe = "aspnetcore-runtime-8.0.8-win-x64.exe", 38 | 39 | c_runtime = "https://aka.ms/vs/17/release/vc_redist.x64.exe", 40 | c_runtime_name = "C++ Redistributable 2015-2022", 41 | c_exe = "VC_redist.x64.exe"; -------------------------------------------------------------------------------- /TcNo Account Switcher/Images/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo Account Switcher/Images/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /TcNo Account Switcher/Images/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo Account Switcher/Images/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /TcNo Account Switcher/Images/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo Account Switcher/Images/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /TcNo Account Switcher/Images/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo Account Switcher/Images/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /TcNo Account Switcher/Images/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo Account Switcher/Images/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /TcNo Account Switcher/Images/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo Account Switcher/Images/StoreLogo.png -------------------------------------------------------------------------------- /TcNo Account Switcher/Images/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo Account Switcher/Images/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /TcNo Account Switcher/Package.appxmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 8 | 9 | 13 | 14 | 15 | TcNo Account Switcher 16 | TCNO 17 | Images\StoreLogo.png 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Client/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Client/CefHandlers.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Windows.Forms; 4 | using CefSharp; 5 | 6 | namespace TcNo_Acc_Switcher_Client 7 | { 8 | public class CefKeyboardHandler : IKeyboardHandler 9 | { 10 | public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, 11 | int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey) 12 | { 13 | if (type != KeyType.KeyUp || !Enum.IsDefined(typeof(Keys), windowsKeyCode)) return false; 14 | 15 | var key = (Keys)windowsKeyCode; 16 | 17 | if (key == Keys.F12) 18 | browser.ShowDevTools(); 19 | else if (key == Keys.F5 && modifiers == CefEventFlags.ControlDown) // Ctrl+F5 - Cache reload 20 | browser.Reload(true); 21 | else if (key == Keys.F5) // F5 - Reload 22 | browser.Reload(); 23 | else if (key == Keys.I && modifiers == (CefEventFlags.ControlDown | CefEventFlags.ShiftDown)) // Ctrl+Shift+I 24 | browser.ShowDevTools(); 25 | else if (key == Keys.F1) // F1 - Opens Wiki page 26 | Process.Start(new ProcessStartInfo { FileName = "https://github.com/TcNobo/TcNo-Acc-Switcher/wiki", UseShellExecute = true }); 27 | 28 | return false; 29 | } 30 | public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut) 31 | { 32 | return false; 33 | } 34 | } 35 | public class CefMenuHandler : IContextMenuHandler 36 | { 37 | public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model) 38 | { 39 | model.Clear(); 40 | } 41 | 42 | public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags) 43 | { 44 | 45 | return false; 46 | } 47 | 48 | public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame) 49 | { 50 | 51 | } 52 | 53 | public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback) 54 | { 55 | return false; 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Client/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  14 | 15 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Client/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "TcNo-Acc-Switcher-Client": { 4 | "commandName": "Project", 5 | "remoteDebugEnabled": false, 6 | "authenticationMode": "Windows", 7 | "remoteDebugMachine": "" 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Client/VerifySignatures.ps1: -------------------------------------------------------------------------------- 1 | function RunSign { 2 | param ( 3 | [string]$p 4 | ) 5 | Write-Host $p 6 | 7 | $args = 'sign /tr http://timestamp.sectigo.com?td=sha256 /td SHA256 /fd SHA256 /a "' + $p + '"' 8 | Start-Process "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe" -ArgumentList $args -Wait 9 | Write-Host $args 10 | } 11 | 12 | cd "C:\Users\tcno\Documents\GitHub\TcNo-Acc-Switcher\TcNo-Acc-Switcher-Client\bin\x64\Release\TcNo-Acc-Switcher" 13 | 14 | $objects = Get-ChildItem TcNo*.exe,TcNo*.dll,runas.exe,_First* -Recurse | ForEach-object {Get-AuthenticodeSignature $_} | Where-Object {$_.status -eq "NotSigned"} 15 | 16 | DO { 17 | Write-Host "Signing: $($objects.Length) binaries" 18 | foreach ($o in $objects) 19 | { 20 | ForEach-Object { RunSign($o.path)} 21 | } 22 | $objects = Get-ChildItem TcNo*.exe,TcNo*.dll,runas.exe,_First* -Recurse | ForEach-object {Get-AuthenticodeSignature $_} | Where-Object {$_.status -eq "NotSigned"} 23 | } While ($objects.Length –ge 1) -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Client/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Client/favicon.ico -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Client/inc/TcNo-Acc-Switcher.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "net6.0", 4 | "framework": { 5 | "name": "Microsoft.AspNetCore.App", 6 | "version": "6.0.4" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true, 10 | "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Client/sign.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo Signing %1 3 | if "%SIGNTOOL%"=="" set SIGNTOOL=%ProgramFiles(x86)%\Windows Kits\10\bin\10.0.22000.0\x64\signtool.exe 4 | "%SIGNTOOL%" sign /tr http://timestamp.sectigo.com?td=sha256 /td SHA256 /fd SHA256 /a %1 5 | exit -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Globals/Extensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Newtonsoft.Json.Linq; 7 | 8 | namespace TcNo_Acc_Switcher_Globals 9 | { 10 | public partial class Globals 11 | { 12 | 13 | } 14 | 15 | public static class JsonExtensions 16 | { 17 | // From: https://stackoverflow.com/a/35804255 and https://dotnetfiddle.net/f3q04u 18 | // Enables easy replacement of specific vars in JObject: var newJsonAuthorString = JsonExtensions.ReplacePath(jsonString, @"$.store.book[*].author", "NewAuthorSpecifiedByUser"); 19 | /// 20 | /// Replaces a token's child or children with a new value. 21 | /// 22 | /// 23 | /// JToken item to be edited and returned 24 | /// Selector path of key to be edited 25 | /// New value for key/s 26 | /// Modified JToken 27 | /// 28 | public static JToken ReplacePath(this JToken root, string path, T newValue) 29 | { 30 | if (root == null || path == null) 31 | throw new ArgumentNullException(); 32 | 33 | foreach (var value in root.SelectTokens(path).ToList()) 34 | { 35 | if (value == root) 36 | root = JToken.FromObject(newValue); 37 | else 38 | value.Replace(JToken.FromObject(newValue)); 39 | } 40 | 41 | return root; 42 | } 43 | 44 | /// 45 | /// Replaces a token's child or children with a new value. This version takes a string as input, and outputs as one. 46 | /// 47 | /// 48 | /// JSON string to edit 49 | /// Selector path of key to be edited 50 | /// New value for key/s 51 | /// Modified JSON string 52 | public static string ReplacePath(string jsonString, string path, T newValue) 53 | { 54 | return JToken.Parse(jsonString).ReplacePath(path, newValue).ToString(); 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Globals/TcNo-Acc-Switcher-Globals.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0 5 | TcNo_Acc_Switcher_Globals 6 | Copyright © TroubleChute (Wesley Pyburn) 2019-2024 7 | TroubleChute (Wesley Pyburn) 8 | TroubleChute (Wesley Pyburn) 9 | https://github.com/TcNobo/TcNo-Acc-Switcher 10 | TcNoAccSw-Icon-100x100.png 11 | https://github.com/TcNobo/TcNo-Acc-Switcher 12 | favicon.ico 13 | x64 14 | 15 | 16 | 17 | 18 | 19 | NU1701 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | True 34 | True 35 | Strings.resx 36 | 37 | 38 | 39 | 40 | 41 | ResXFileCodeGenerator 42 | Strings.Designer.cs 43 | 44 | 45 | 46 | 47 | 48 | True 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Globals/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Globals/favicon.ico -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/.config/dotnet-tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "isRoot": true, 4 | "tools": { 5 | "electronnet.cli": { 6 | "version": "9.31.2", 7 | "commands": [ 8 | "electronize" 9 | ] 10 | }, 11 | "dotnet-ef": { 12 | "version": "5.0.10", 13 | "commands": [ 14 | "dotnet-ef" 15 | ] 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/App.razor: -------------------------------------------------------------------------------- 1 | @*TcNo Account Switcher - A Super fast account switcher 2 | Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | This program is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License 13 | along with this program. If not, see .*@ 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |

Sorry, there's nothing at this address.

22 |
23 |
24 |
25 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Disclaimer.txt: -------------------------------------------------------------------------------- 1 | All trademarks and materials are the property of their respective owners and their licensors. This project is not affiliated 2 | with any companies referenced. This is not "Official" software or related to any companies mentioned. All it does is let you 3 | move your files around on your computer the same way you can. The use of names, icons and trademarks does not indicate 4 | endorsement of the trademark holder by this project or its creators, nor vice versa. They are only used to visually indicate 5 | which programs this project interacts with easily to the end-user. 6 | 7 | By enabling optional features that scrape the web for publically available information (such as limited game/profile statistics 8 | and other data), you understand and accept full responsibility for doing so on your own volition. If you appreciate accurate 9 | information, support the services providing it directly. The information collected is incredibly limited and is no replacement 10 | or competitor for sites scraped. 11 | 12 | I am not responsible for the contents of external links. 13 | For the rest of the disclaimer, refer to the License (GNU General Public License v3.0) file: 14 | https://github.com/TcNobo/TcNo-Acc-Switcher/blob/master/LICENSE - See sections like 15, 16 and 17, as well as GitHub's 15 | 'simplification' at the top of the above website. 16 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/GlobalSuppressions.cs: -------------------------------------------------------------------------------- 1 | // This file is used by Code Analysis to maintain SuppressMessage 2 | // attributes that are applied to this project. 3 | // Project-level suppressions either have no target or are given 4 | // a specific target and scoped to a namespace, type, member, etc. 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Pages/Basic/BasicSwitcherBase.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Versioning; 2 | using Microsoft.JSInterop; 3 | using TcNo_Acc_Switcher_Globals; 4 | using TcNo_Acc_Switcher_Server.Data; 5 | using TcNo_Acc_Switcher_Server.Pages.General; 6 | 7 | namespace TcNo_Acc_Switcher_Server.Pages.Basic 8 | { 9 | public class BasicSwitcherBase 10 | { 11 | /// 12 | /// JS function handler for swapping to another Basic account. 13 | /// 14 | /// Requested account's Login Username 15 | [JSInvokable] 16 | [SupportedOSPlatform("windows")] 17 | public static void SwapToBasic(string accName) 18 | { 19 | Globals.DebugWriteLine(@"[JSInvoke:Basic\BasicSwitcherBase.SwapToBasic] accName:hidden"); 20 | BasicSwitcherFuncs.SwapBasicAccounts(accName); 21 | } 22 | 23 | /// 24 | /// JS function handler for swapping to a new Basic account (No inputs) 25 | /// 26 | [JSInvokable] 27 | [SupportedOSPlatform("windows")] 28 | public static void NewLogin_Basic() 29 | { 30 | Globals.DebugWriteLine(@"[JSInvoke:Basic\BasicSwitcherBase.NewLogin_Basic]"); 31 | BasicSwitcherFuncs.SwapBasicAccounts(); 32 | } 33 | 34 | [JSInvokable] 35 | [SupportedOSPlatform("windows")] 36 | public static void BasicAddCurrent(string accName) 37 | { 38 | Globals.DebugWriteLine(@"[JSInvoke:Basic\BasicSwitcherBase.BasicAddCurrent] accName:hidden"); 39 | if (string.IsNullOrWhiteSpace(accName)) // Reject if username is empty. 40 | { 41 | _ = GeneralInvocableFuncs.ShowToast("error", Lang.Instance["Toast_NameEmpty"], Lang.Instance["Failed"], "toastarea"); 42 | return; 43 | } 44 | 45 | try 46 | { 47 | _ = BasicSwitcherFuncs.BasicAddCurrent(accName); 48 | } 49 | catch (System.IO.DirectoryNotFoundException io) 50 | { 51 | _ = GeneralInvocableFuncs.ShowToast("error", Lang.Instance["Toast_RestartAsAdmin"], Lang.Instance["Failed"], "toastarea"); 52 | Globals.WriteToLog($"Failed to BasicAddCurrent. DirectoryNotFoundException", io); 53 | } 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Pages/Error.cshtml: -------------------------------------------------------------------------------- 1 | @*TcNo Account Switcher - A Super fast account switcher 2 | Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | This program is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License 13 | along with this program. If not, see .*@ 14 | 15 | @page 16 | 17 |

Error.

18 |

An error occurred while processing your request.

19 | 20 |

Development Mode

21 |

22 | Swapping to Development environment will display more detailed information about the error that occurred. 23 |

24 |

25 | The Development environment shouldn't be enabled for deployed applications. 26 | It can result in displaying sensitive information from exceptions to end users. 27 | For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development 28 | and restarting the app. 29 |

30 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Pages/General/PathPicker.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using Microsoft.JSInterop; 6 | using TcNo_Acc_Switcher_Globals; 7 | 8 | namespace TcNo_Acc_Switcher_Server.Pages.General 9 | { 10 | 11 | public class PathPicker 12 | { 13 | private static readonly Dictionary> ReturnObject = new() 14 | { 15 | {"Folders", new List()}, 16 | {"Files", new List()} 17 | }; 18 | 19 | [JSInvokable] 20 | public static object GetLogicalDrives() 21 | { 22 | var ro = ReturnObject; 23 | try 24 | { 25 | ro["Folders"] = Directory.GetLogicalDrives().ToList(); 26 | } 27 | catch (Exception e) 28 | { 29 | Globals.WriteToLog("Could not list Logical Drives.", e); 30 | } 31 | return ro; 32 | } 33 | 34 | [JSInvokable] 35 | public static object GetFoldersAndFiles(string path) 36 | { 37 | var ro = ReturnObject; 38 | try 39 | { 40 | ro["Folders"] = Directory.GetDirectories(path).ToList(); 41 | ro["Files"] = Directory.GetFiles(path).ToList(); 42 | } 43 | catch (Exception e) 44 | { 45 | Globals.WriteToLog("Could not get list of files and folders.", e); 46 | } 47 | return ro; 48 | } 49 | 50 | [JSInvokable] 51 | public static object GetFolders(string path) 52 | { 53 | var ro = ReturnObject; 54 | try 55 | { 56 | ro["Folders"] = Directory.GetDirectories(path).ToList(); 57 | } 58 | catch (Exception e) 59 | { 60 | Globals.WriteToLog("Could not get list of files and folders.", e); 61 | } 62 | return ro; 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Pages/General/TextEditor.razor: -------------------------------------------------------------------------------- 1 | @*TcNo Account Switcher - A Super fast account switcher 2 | Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | This program is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License 13 | along with this program. If not, see .*@ 14 | 15 | @page "/TextEditor/" 16 | @using TcNo_Acc_Switcher_Server.Data 17 | @inject AppData AData 18 | @inject IJSRuntime JsRuntime 19 | @{ AData.SetActiveIJsRuntime(JsRuntime); } 20 | @inject NavigationManager NavManager 21 | @{ AData.SetActiveNavMan(NavManager); } 22 | 23 | @inject Lang Locale 24 | 25 |
26 |
27 |
28 | @@echo off
29 | REM This is a sample file.
30 | Actions will show here
31 |         
32 |
33 |
34 | 37 | 40 |
41 |
42 | 43 | @code 44 | { 45 | private static readonly Lang Lang = Lang.Instance; 46 | // This has to be here for NavManager. 47 | // This is run before everything is painted on, so that it can get the correct values for the CSS Block. 48 | protected override void OnParametersSet() 49 | { 50 | AppSettings.StreamerModeCheck(); 51 | } 52 | 53 | protected override void OnInitialized() 54 | { 55 | AppData.Instance.WindowTitle = Lang["Title_TextEditor"]; 56 | _ = AppData.InvokeVoidAsync("initEditor"); 57 | } 58 | 59 | public void SaveFile() 60 | { 61 | // 62 | 63 | NavManager.NavigateTo("/Steam"); 64 | } 65 | 66 | public void Cancel() 67 | { 68 | // 69 | } 70 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Pages/Platforms/Settings.razor.cs: -------------------------------------------------------------------------------- 1 | // TcNo Account Switcher - A Super fast account switcher 2 | // Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | // This program is free software: you can redistribute it and/or modify 4 | // it under the terms of the GNU General Public License as published by 5 | // the Free Software Foundation, either version 3 of the License, or 6 | // (at your option) any later version. 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU General Public License 13 | // along with this program. If not, see . 14 | 15 | using Microsoft.AspNetCore.Components; 16 | using TcNo_Acc_Switcher_Globals; 17 | using TcNo_Acc_Switcher_Server.Data; 18 | 19 | namespace TcNo_Acc_Switcher_Server.Pages.Platforms 20 | { 21 | public partial class Settings 22 | { 23 | private static readonly Lang Lang = Lang.Instance; 24 | [Inject] 25 | public AppData AppData { get; set; } 26 | protected override void OnInitialized() 27 | { 28 | AppData.Instance.WindowTitle = Lang["Title_Platforms_Settings"]; 29 | Globals.DebugWriteLine(@"[Auto:Platforms\Settings.razor.cs.OnInitializedAsync]"); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Pages/PreviewCss/PreviewCss.razor.cs: -------------------------------------------------------------------------------- 1 | // TcNo Account Switcher - A Super fast account switcher 2 | // Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | // This program is free software: you can redistribute it and/or modify 4 | // it under the terms of the GNU General Public License as published by 5 | // the Free Software Foundation, either version 3 of the License, or 6 | // (at your option) any later version. 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU General Public License 13 | // along with this program. If not, see . 14 | 15 | using Microsoft.AspNetCore.Components; 16 | using TcNo_Acc_Switcher_Globals; 17 | using TcNo_Acc_Switcher_Server.Data; 18 | 19 | namespace TcNo_Acc_Switcher_Server.Pages.PreviewCss 20 | { 21 | public partial class PreviewCss 22 | { 23 | private static readonly Lang Lang = Lang.Instance; 24 | [Inject] 25 | public AppData AppData { get; set; } 26 | protected override void OnInitialized() 27 | { 28 | AppData.Instance.WindowTitle = Lang["Title_Settings_TestCss"]; 29 | Globals.DebugWriteLine(@"[Auto:Settings\TestCss.razor.cs.OnInitializedAsync]"); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Pages/Settings.razor: -------------------------------------------------------------------------------- 1 | @*TcNo Account Switcher - A Super fast account switcher 2 | Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | This program is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License 13 | along with this program. If not, see .*@ 14 | 15 | @page "/Settings" 16 | @using TcNo_Acc_Switcher_Server.Data 17 | @namespace TcNo_Acc_Switcher_Server.Pages 18 | @inject NavigationManager NavManager 19 | @inject AppData AData 20 | @{ AData.SetActiveNavMan(NavManager); } 21 | @inject IJSRuntime JsRuntime 22 | @{ AData.SetActiveIJsRuntime(JsRuntime); } 23 | @inject Lang Locale 24 | 25 |
26 |
27 |
28 |
29 | 30 | 31 |
32 |
33 |
34 |
35 |
36 | 37 | An error has occurred. This application may no longer respond until reloaded. 38 | 39 | 40 | An unhandled exception has occurred. See browser dev tools for details. 41 | 42 | Reload 43 | 🗙 44 |
45 | 46 | @code 47 | { 48 | public void SaveAndClose() 49 | { 50 | AppSettings.SaveSettings(); 51 | 52 | NavManager.NavigateTo("/"); 53 | } 54 | 55 | protected override void OnAfterRender(bool firstRender) 56 | { 57 | AppStats.NewNavigation("/Settings/"); 58 | if (!firstRender) return; 59 | _ = AppData.InvokeVoidAsync("initSavingHotKey"); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Pages/Settings.razor.cs: -------------------------------------------------------------------------------- 1 | // TcNo Account Switcher - A Super fast account switcher 2 | // Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | // This program is free software: you can redistribute it and/or modify 4 | // it under the terms of the GNU General Public License as published by 5 | // the Free Software Foundation, either version 3 of the License, or 6 | // (at your option) any later version. 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU General Public License 13 | // along with this program. If not, see . 14 | 15 | using TcNo_Acc_Switcher_Globals; 16 | using TcNo_Acc_Switcher_Server.Data; 17 | 18 | namespace TcNo_Acc_Switcher_Server.Pages 19 | { 20 | public partial class Settings 21 | { 22 | private static readonly Lang Lang = Lang.Instance; 23 | protected override void OnInitialized() 24 | { 25 | AppData.Instance.WindowTitle = Lang["Title_Settings"]; 26 | Globals.DebugWriteLine(@"[Auto:Settings.razor.cs.OnInitializedAsync]"); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Pages/Steam/Index.razor.cs: -------------------------------------------------------------------------------- 1 | // TcNo Account Switcher - A Super fast account switcher 2 | // Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | // This program is free software: you can redistribute it and/or modify 4 | // it under the terms of the GNU General Public License as published by 5 | // the Free Software Foundation, either version 3 of the License, or 6 | // (at your option) any later version. 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU General Public License 13 | // along with this program. If not, see . 14 | 15 | using Newtonsoft.Json; 16 | 17 | namespace TcNo_Acc_Switcher_Server.Pages.Steam 18 | { 19 | public partial class Index 20 | { 21 | /// 22 | /// Simple class for storing info related to Steam account, for switching and displaying. 23 | /// 24 | public class Steamuser 25 | { 26 | [JsonIgnore] public string SteamId { get; set; } 27 | [JsonProperty("AccountName", Order = 0)] public string AccName { get; set; } 28 | [JsonProperty("PersonaName", Order = 1)] public string Name { get; set; } 29 | [JsonProperty("RememberPassword", Order = 2)] public string RememberPass = "1"; // Should always be 1 30 | [JsonProperty("MostRecent", Order = 3)] public string MostRec = "0"; 31 | [JsonProperty("Timestamp", Order = 4)] public string LastLogin { get; set; } 32 | [JsonProperty("WantsOfflineMode", Order = 5)] public string OfflineMode = "0"; 33 | [JsonProperty("SkipOfflineModeWarning", Order = 6)] public string SkipOfflineModeWarning { get; set; } = "0"; 34 | [JsonProperty("AllowAutoLogin", Order = 7)] public string AutoLogin = "1"; // New(ish) setting from Steam. Not too sure what this does. 35 | 36 | [JsonIgnore] public string ImageDownloadUrl { get; set; } 37 | [JsonIgnore] public string ImgUrl { get; set; } 38 | [JsonIgnore] public bool BanInfoLoaded { get; set; } 39 | [JsonIgnore] public bool Vac { get; set; } 40 | // Either Limited or Community banned status (when using Steam Web API) 41 | [JsonIgnore] public bool Limited { get; set; } 42 | 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Platforms/Discord/Username.html: -------------------------------------------------------------------------------- 1 |  2 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Platforms/Discord/Username.js: -------------------------------------------------------------------------------- 1 | // This will collect and copy: 2 | // Username-0000:{"image":"Link To Profile Picture"} 3 | // Make sure to hit Ctrl+Shift+I in Discord to open the Developer Tools, then go to the Console tab. 4 | // -> Not working? Go to User Settings > Advanced (under APP SETTINGS) > Turn on Developer Mode. 5 | // Once in Console: 6 | // - Look at the top next to the eye icon, and the filter text box. 7 | // - Click the "top ▼" dropdown. 8 | // - Select Electron Isolated Context 9 | // - Paste this code 10 | // 11 | // Once it has run, paste in the TcNo Account Switcher's username text box. 12 | 13 | clear(); 14 | if (this.localStorage == undefined) { 15 | console.log("On the Console tab:\n- Click the \"top ▼\" dropdown.\n- Select Electron Isolated Context\n- Paste this code again."); 16 | } else { 17 | var multiAccountStore = this.localStorage.getItem("MultiAccountStore"); 18 | var accountInfo = JSON.parse(multiAccountStore)["_state"]["users"][0]; 19 | var text = accountInfo["username"] + "-" + accountInfo["discriminator"] + ":" + `{"image":"https://cdn.discordapp.com/avatars/${accountInfo["id"]}/${accountInfo["avatar"]}.webp?size=512"}`; 20 | console.log("Copied!\nPaste this in the TcNo Account Switcher's username text box."); 21 | copy(text); 22 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iis": { 6 | "applicationUrl": "http://localhost/TcNo-Acc-Switcher", 7 | "sslPort": 0 8 | }, 9 | "iisExpress": { 10 | "applicationUrl": "http://localhost:62455", 11 | "sslPort": 0 12 | } 13 | }, 14 | "profiles": { 15 | "Electron.NET App": { 16 | "commandName": "Executable", 17 | "executablePath": "electronize", 18 | "commandLineArgs": "start", 19 | "workingDirectory": ".", 20 | "environmentVariables": { 21 | "IS_ELECTRON ": "true" 22 | } 23 | }, 24 | "IIS Express": { 25 | "commandName": "IISExpress", 26 | "launchBrowser": true, 27 | "environmentVariables": { 28 | "ASPNETCORE_ENVIRONMENT": "Development" 29 | } 30 | }, 31 | "TcNo-Acc-Switcher": { 32 | "commandName": "Project", 33 | "environmentVariables": { 34 | "ASPNETCORE_ENVIRONMENT": "Development" 35 | }, 36 | "applicationUrl": "http://localhost:1337" 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Resources/desktop.ini: -------------------------------------------------------------------------------- 1 | [LocalizedFileNames] 2 | ko-KR.yml=@ko-KR.yml,0 3 | no-NO.yml=@no-NO.yml,0 4 | pl-PL.yml=@pl-PL.yml,0 5 | pt-BR.yml=@pt-BR.yml,0 6 | pt-PT.yml=@pt-PT.yml,0 7 | ro-RO.yml=@ro-RO.yml,0 8 | ru-RU.yml=@ru-RU.yml,0 9 | sr-SP.yml=@sr-SP.yml,0 10 | sv-SE.yml=@sv-SE.yml,0 11 | tr-TR.yml=@tr-TR.yml,0 12 | uk-UA.yml=@uk-UA.yml,0 13 | vi-VN.yml=@vi-VN.yml,0 14 | af-ZA.yml=@af-ZA.yml,0 15 | ar-SA.yml=@ar-SA.yml,0 16 | ca-ES.yml=@ca-ES.yml,0 17 | cs-CZ.yml=@cs-CZ.yml,0 18 | da-DK.yml=@da-DK.yml,0 19 | de-DE.yml=@de-DE.yml,0 20 | en-US.yml=@en-US.yml,0 21 | fi-FI.yml=@fi-FI.yml,0 22 | fr-FR.yml=@fr-FR.yml,0 23 | nl-NL.yml=@nl-NL.yml,0 24 | zh-CN.yml=@zh-CN.yml,0 25 | zh-TW.yml=@zh-TW.yml,0 26 | el-GR.yml=@el-GR.yml,0 27 | es-ES.yml=@es-ES.yml,0 28 | he-IL.yml=@he-IL.yml,0 29 | hu-HU.yml=@hu-HU.yml,0 30 | it-IT.yml=@it-IT.yml,0 31 | ja-JP.yml=@ja-JP.yml,0 32 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Shared/Accounts/Account.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using TcNo_Acc_Switcher_Server.Data; 4 | 5 | namespace TcNo_Acc_Switcher_Server.Shared.Accounts; 6 | 7 | public class Account 8 | { 9 | private static readonly Lang Lang = Lang.Instance; 10 | public string Platform { get; set; } = ""; 11 | public string ImagePath { get; set; } = ""; 12 | public string DisplayName { get; set; } = ""; 13 | public string AccountId { get; set; } = ""; 14 | public string Line0 { get; set; } = ""; 15 | public string Line2 { get; set; } = ""; 16 | public string Line3 { get; set; } = ""; 17 | public Dictionary> UserStats { get; set; } 18 | 19 | public void SetUserStats(string platform) 20 | { 21 | UserStats = BasicStats.GetUserStatsAllGamesMarkup(platform, AccountId); 22 | } 23 | public ClassCollection Classes { get; set; } = new(); 24 | 25 | // Optional 26 | public class ClassCollection 27 | { 28 | public string Label { get; set; } = ""; 29 | public string Image { get; set; } = ""; 30 | public string Line0 { get; set; } = ""; 31 | public string Line2 { get; set; } = ""; 32 | public string Line3 { get; set; } = ""; 33 | } 34 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Shared/Accounts/AccountList.razor: -------------------------------------------------------------------------------- 1 | @*TcNo Account Switcher - A Super fast account switcher 2 | Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | This program is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License 13 | along with this program. If not, see .*@ 14 | 15 | @using Newtonsoft.Json.Linq 16 | @using TcNo_Acc_Switcher_Globals 17 | @using System.Collections.ObjectModel 18 | @inject IJSRuntime Js 19 | 20 | @code { 21 | [Parameter] 22 | public ObservableCollection AccountItems { get; set; } 23 | [Parameter] 24 | public Dictionary AccountNotes { get; set; } 25 | 26 | protected override void OnInitialized() 27 | { 28 | AccountItems.CollectionChanged += ((_, _) => InvokeAsync(StateHasChanged)); 29 | } 30 | } 31 |
32 | 33 | @foreach (var item in AccountItems) 34 | { 35 | 36 | 37 | 38 | } 39 |
-------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Shared/ChooseLanguage.razor: -------------------------------------------------------------------------------- 1 | @using TcNo_Acc_Switcher_Server.Data 2 | @using TcNo_Acc_Switcher_Server.Pages.General 3 | @using System.Globalization 4 | @*TcNo Account Switcher - A Super fast account switcher 5 | Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 6 | This program is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program. If not, see .*@ 17 | @inject NavigationManager NavigationManager 18 | @inject Lang Locale 19 | 20 | @if (_cultures != null) 21 | { 22 | @Locale["Header_ChooseLanguage"] 23 | 37 | } 38 | 39 | @code { 40 | private readonly string _selectedCulture = Lang.GetCurrentLanguage().Key; 41 | private Dictionary _cultures = Lang.GetAvailableLanguagesDict(); 42 | 43 | protected override void OnInitialized() 44 | { 45 | 46 | } 47 | 48 | private async Task RequestCultureChange(string key) 49 | { 50 | if (string.IsNullOrWhiteSpace(key)) return; 51 | Lang.LoadLang(key); 52 | AppSettings.Rtl = new CultureInfo(Lang.Current).TextInfo.IsRightToLeft; 53 | await AppData.ReloadPage(); 54 | } 55 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Shared/ContextMenu/ContextMenu.razor: -------------------------------------------------------------------------------- 1 | @*TcNo Account Switcher - A Super fast account switcher 2 | Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | This program is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License 13 | along with this program. If not, see .*@ 14 | 15 | @using Newtonsoft.Json.Linq 16 | @using TcNo_Acc_Switcher_Globals 17 | @using System.Collections.ObjectModel 18 | @inject IJSRuntime Js 19 | 20 | @code { 21 | [Parameter] 22 | public string ContextMenuId { get; set; } 23 | [Parameter] 24 | public ObservableCollection MenuItems { get; set; } 25 | 26 | protected override void OnInitialized() 27 | { 28 | MenuItems.CollectionChanged += ((_, _) => InvokeAsync(StateHasChanged)); 29 | } 30 | } 31 | 32 |
    33 | @{ 34 | var itemsCopy = MenuItems.ToList(); 35 | @foreach (var item in itemsCopy) 36 | { 37 | 38 | } 39 | } 40 |
-------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Shared/ContextMenu/MenuBuilder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Linq; 5 | 6 | namespace TcNo_Acc_Switcher_Server.Shared.ContextMenu; 7 | 8 | public class MenuBuilder 9 | { 10 | private readonly ObservableCollection _menu; 11 | public ObservableCollection Result() => _menu; 12 | public MenuBuilder() 13 | { 14 | _menu = new ObservableCollection(); 15 | } 16 | 17 | public MenuBuilder(Tuple item):this() 18 | { 19 | AddItem(item); 20 | } 21 | public MenuBuilder(IEnumerable> items):this() 22 | { 23 | AddItems(items); 24 | } 25 | 26 | public void AddItems(IEnumerable> items) 27 | { 28 | foreach (var item in items) 29 | { 30 | AddItem(item); 31 | } 32 | } 33 | 34 | public void AddMenuItem(MenuItem item) 35 | { 36 | _menu.Add(item); 37 | } 38 | public void AddItem(Tuple item) 39 | { 40 | if (item is null) return; 41 | MenuItem menuItem = new() 42 | { 43 | Text = item.Item1 44 | }; 45 | switch (item.Item2) 46 | { 47 | case string content: 48 | { 49 | menuItem.Content = content; 50 | break; 51 | } 52 | case IEnumerable> subItems: 53 | { 54 | var builder = new MenuBuilder(); 55 | foreach(var subItem in subItems) { 56 | builder.AddItem(subItem); 57 | } 58 | menuItem.Children = builder.Result().ToList(); 59 | break; 60 | } 61 | // Example usage: new ("Test Action", () => System.Environment.Exit(1) ), 62 | case Action action: 63 | { 64 | menuItem.MenuAction = action; 65 | break; 66 | } 67 | case MenuItem existingMenuItem: 68 | { 69 | menuItem = existingMenuItem; 70 | break; 71 | } 72 | default: 73 | { 74 | throw new ArgumentException("Invalid menu item type"); 75 | } 76 | } 77 | _menu.Add(menuItem); 78 | } 79 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Shared/ContextMenu/MenuItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using TcNo_Acc_Switcher_Server.Data; 4 | 5 | namespace TcNo_Acc_Switcher_Server.Shared.ContextMenu; 6 | 7 | public class MenuItem 8 | { 9 | private static readonly Lang Lang = Lang.Instance; 10 | private string _text; 11 | public string Text { get => Lang[_text] ?? _text ; set => _text = value; } 12 | public string Content { get; set; } 13 | public Action MenuAction; 14 | public List Children = new(); 15 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Shared/CustomExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | 4 | namespace TcNo_Acc_Switcher_Server.Shared; 5 | 6 | public static class ObservableCollectionExtensions { 7 | public static void AddRange(this ObservableCollection collection, IEnumerable items) 8 | { 9 | foreach (var item in items) 10 | { 11 | collection.Add(item); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Shared/DynamicStylesheet.razor: -------------------------------------------------------------------------------- 1 | @*TcNo Account Switcher - A Super fast account switcher 2 | Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | This program is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License 13 | along with this program. If not, see .*@ 14 | @namespace TcNo_Acc_Switcher_Server.Shared 15 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Shared/DynamicStylesheet.razor.cs: -------------------------------------------------------------------------------- 1 | // TcNo Account Switcher - A Super fast account switcher 2 | // Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | // This program is free software: you can redistribute it and/or modify 4 | // it under the terms of the GNU General Public License as published by 5 | // the Free Software Foundation, either version 3 of the License, or 6 | // (at your option) any later version. 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU General Public License 13 | // along with this program. If not, see . 14 | 15 | // Special thanks to iR3turnZ for contributing to this platform's account switcher 16 | // iR3turnZ: https://github.com/HoeblingerDaniel 17 | 18 | using System; 19 | using TcNo_Acc_Switcher_Server.Data; 20 | 21 | namespace TcNo_Acc_Switcher_Server.Shared 22 | { 23 | public partial class DynamicStylesheet 24 | { 25 | public string GetStylesheetMarkupString() 26 | { 27 | var style = AppSettings.Stylesheet; 28 | 29 | if (OperatingSystem.IsWindows() && AppSettings.WindowsAccent) 30 | { 31 | var start = style.IndexOf("--accent:", StringComparison.Ordinal); 32 | var end = style.IndexOf(";", start, StringComparison.Ordinal) - start; 33 | style = style.Replace(style.Substring(start, end), ""); 34 | 35 | var (h, s, l) = AppSettings.WindowsAccentColorHsl; 36 | var (r, g, b) = AppSettings.WindowsAccentColorInt; 37 | style = $":root {{ --accentHS: {h}, {s}%; --accentL: {l}%; --accent: {AppSettings.WindowsAccentColor}; --accentInt: {r}, {g}, {b}}}\n\n; " + style; 38 | } 39 | 40 | if (AppSettings.Rtl) 41 | style = "@import url(css/rtl.min.css);\n" + style; 42 | 43 | if (AppSettings.Background != "") 44 | style += ".programMain {background: url(" + AppSettings.Background + ")!important;background-size:cover!important;}"; 45 | 46 | return style; 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Shared/MainLayout.razor: -------------------------------------------------------------------------------- 1 | @*TcNo Account Switcher - A Super fast account switcher 2 | Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | This program is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License 13 | along with this program. If not, see .*@ 14 | 15 | @inherits LayoutComponentBase 16 | 17 | @using TcNo_Acc_Switcher_Server.Data 18 | @inject IJSRuntime JsRuntime 19 | @{ AData.SetActiveIJsRuntime(JsRuntime); } 20 | @inject NavigationManager NavManager 21 | @{ AData.SetActiveNavMan(NavManager); } 22 | @inject AppData AData 23 | 24 |
25 | 26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | 34 | @Body 35 |
36 | 37 | 38 | @code{ 39 | protected override async Task OnInitializedAsync() 40 | { 41 | await base.OnInitializedAsync(); 42 | if (AppSettings.PasswordHash != "" && AppSettings.PasswordCurrent != AppSettings.PasswordHash) 43 | { 44 | if (!NavManager.Uri.Contains("/login")) NavManager.NavigateTo($"/login?returnUrl={Uri.EscapeDataString(NavManager.Uri)}"); 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Shared/Modal.razor: -------------------------------------------------------------------------------- 1 | @using TcNo_Acc_Switcher_Server.Data 2 | @*TcNo Account Switcher - A Super fast account switcher 3 | Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 4 | This program is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | GNU General Public License for more details. 12 | 13 | You should have received a copy of the GNU General Public License 14 | along with this program. If not, see .*@ 15 | 16 | @inject IJSRuntime JsRuntime 17 | @inject AppData AData 18 | @inject Lang Locale 19 | 20 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/Steamworks.NET.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/Steamworks.NET.dll -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/TcNo-Acc-Switcher-Server.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30320.27 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TcNo-Acc-Switcher-Server", "TcNo-Acc-Switcher-Server.csproj", "{A67C2154-281B-4F33-85AE-67F2F8E3F174}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|x64 = Debug|x64 12 | Debug|x86 = Debug|x86 13 | Release|Any CPU = Release|Any CPU 14 | Release|x64 = Release|x64 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Debug|x64.ActiveCfg = Debug|Any CPU 21 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Debug|x64.Build.0 = Debug|Any CPU 22 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Debug|x86.ActiveCfg = Debug|Any CPU 23 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Debug|x86.Build.0 = Debug|Any CPU 24 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Release|x64.ActiveCfg = Release|Any CPU 27 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Release|x64.Build.0 = Release|Any CPU 28 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Release|x86.ActiveCfg = Release|Any CPU 29 | {A67C2154-281B-4F33-85AE-67F2F8E3F174}.Release|x86.Build.0 = Release|Any CPU 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | GlobalSection(ExtensibilityGlobals) = postSolution 35 | SolutionGuid = {AD46E274-83AD-413A-A6BE-7C402621E941} 36 | EndGlobalSection 37 | EndGlobal 38 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/TcNoAccSw-Icon-100x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/TcNoAccSw-Icon-100x100.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/_Imports.razor: -------------------------------------------------------------------------------- 1 | @*TcNo Account Switcher - A Super fast account switcher 2 | Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | This program is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU General Public License for more details. 11 | 12 | You should have received a copy of the GNU General Public License 13 | along with this program. If not, see .*@ 14 | 15 | @using System.Net.Http 16 | @using Microsoft.AspNetCore.Authorization 17 | @using Microsoft.AspNetCore.Components.Authorization 18 | @using Microsoft.AspNetCore.Components.Forms 19 | @using Microsoft.AspNetCore.Components.Routing 20 | @using Microsoft.AspNetCore.Components.Web 21 | @using Microsoft.JSInterop 22 | @using TcNo_Acc_Switcher_Server.Shared -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "DetailedErrors": true, 3 | "Logging": { 4 | "LogLevel": { 5 | "Default": "Information", 6 | "Microsoft": "Warning", 7 | "Microsoft.Hosting.Lifetime": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Warning" 7 | } 8 | }, 9 | "AllowedHosts": "*" 10 | } 11 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/compilerconfig.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "outputFile": "wwwroot/css/site.css", 4 | "inputFile": "wwwroot/css/site.scss", 5 | "minify": { 6 | "enabled": true 7 | } 8 | }, 9 | { 10 | "outputFile": "wwwroot/css/UI.css", 11 | "inputFile": "wwwroot/css/UI.scss", 12 | "minify": { 13 | "enabled": true 14 | } 15 | }, 16 | { 17 | "outputFile": "wwwroot/css/modal.css", 18 | "inputFile": "wwwroot/css/modal.scss", 19 | "minify": { 20 | "enabled": true 21 | } 22 | }, 23 | { 24 | "outputFile": "wwwroot/css/context_menu.css", 25 | "inputFile": "wwwroot/css/context_menu.scss", 26 | "minify": { 27 | "enabled": true 28 | } 29 | }, 30 | { 31 | "outputFile": "wwwroot/css/rtl.css", 32 | "inputFile": "wwwroot/css/rtl.scss", 33 | "minify": { 34 | "enabled": true 35 | } 36 | }, 37 | { 38 | "outputFile": "wwwroot/css/settings.css", 39 | "inputFile": "wwwroot/css/settings.scss", 40 | "minify": { 41 | "enabled": true 42 | } 43 | }, 44 | { 45 | "outputFile": "wwwroot/css/acclist.css", 46 | "inputFile": "wwwroot/css/acclist.scss", 47 | "minify": { 48 | "enabled": true 49 | } 50 | } 51 | ] -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/compilerconfig.json.defaults: -------------------------------------------------------------------------------- 1 | { 2 | "compilers": { 3 | "less": { 4 | "autoPrefix": "", 5 | "cssComb": "none", 6 | "ieCompat": true, 7 | "strictMath": false, 8 | "strictUnits": false, 9 | "relativeUrls": true, 10 | "rootPath": "", 11 | "sourceMapRoot": "", 12 | "sourceMapBasePath": "", 13 | "sourceMap": false 14 | }, 15 | "sass": { 16 | "autoPrefix": "", 17 | "includePath": "", 18 | "indentType": "space", 19 | "indentWidth": 2, 20 | "outputStyle": "nested", 21 | "Precision": 5, 22 | "relativeUrls": true, 23 | "sourceMapRoot": "", 24 | "lineFeed": "", 25 | "sourceMap": false 26 | }, 27 | "stylus": { 28 | "sourceMap": false 29 | }, 30 | "babel": { 31 | "sourceMap": false 32 | }, 33 | "coffeescript": { 34 | "bare": false, 35 | "runtimeMode": "node", 36 | "sourceMap": false 37 | }, 38 | "handlebars": { 39 | "root": "", 40 | "noBOM": false, 41 | "name": "", 42 | "namespace": "", 43 | "knownHelpersOnly": false, 44 | "forcePartial": false, 45 | "knownHelpers": [], 46 | "commonjs": "", 47 | "amd": false, 48 | "sourceMap": false 49 | } 50 | }, 51 | "minifiers": { 52 | "css": { 53 | "enabled": true, 54 | "termSemicolons": true, 55 | "gzip": false 56 | }, 57 | "javascript": { 58 | "enabled": true, 59 | "termSemicolons": true, 60 | "gzip": false 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/themes/Dracula_Cyan/info.yaml: -------------------------------------------------------------------------------- 1 | # This theme's name (Shows in-app, can be different to folder name) 2 | name: Dracula Cyan (Default) 3 | accent: "#8BE9FD" 4 | 5 | # Required colors for updater & main UI (not HTML/CSS): 6 | # - Not including these will cause the updater to use default color scheme (Dracula Cyan) 7 | linkColor: "#8BE9FD" # Accent color 8 | headerbarBackground: "#253340" 9 | mainBackground: "#0E1419" 10 | modalInputBackground: "#070A0D" 11 | borderedItemBorderColor: "#888888" 12 | buttonBackground: "#274560" 13 | buttonBackground-hover: "#28374E" 14 | buttonBackground-active: "#28374E" 15 | buttonColor: "#FFFFFF" 16 | buttonBorder: "#274560" 17 | buttonBorder-hover: "#274560" 18 | buttonBorder-active: "#8BE9FD" 19 | windowControlsBackground: "#253340" 20 | windowControlsBackground-active: "#3B4853" 21 | windowControlsCloseBackground: "#D51426" 22 | windowControlsCloseBackground-active: "#D51426" 23 | # For platform shortcuts on desktop (For consistency make sure these match your CSS) 24 | platformLogoForeground: "#00a5f8" 25 | platformLogoBackground: "#202224" -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/themes/Dracula_Cyan/style.scss: -------------------------------------------------------------------------------- 1 | /* 2 | Dracula Cyan (Default) theme 3 | - Created by TroubleChute 4 | */ 5 | :root { 6 | // All these extra accent steps and redefinitions are required for Windows accent options 7 | // Elements that use these will be set by either Windows Accent or Theme 8 | --accent: #8BE9FD; /* Must be HEX */ 9 | --accentHS: 190, 100%; /* "H, S%" from accent as HSL */ 10 | --accentL: 50%; /* "L" from accent HSL */ 11 | --accentInt: 0, 212, 255; /* accent as "r, g, b" */ 12 | } 13 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/themes/Monokai/README.md: -------------------------------------------------------------------------------- 1 | # Monokai 2 | 3 | > **_NOTE: If you're using RTL language (e.g. Arabic) Please consider using the [Right To Left version](<../Monokai_(Right_To_Left)/README.md>)_** 4 | 5 | ## Screenshots 6 | 7 | ### Platform Selection 8 | 9 | ![Platform Selection](https://i.imgur.com/OSY4cuI.png) 10 | 11 | ### Location Modal 12 | 13 | ![Location Modal](https://i.imgur.com/9ClRmHF.png) 14 | 15 | ### Settings 16 | 17 | ![Settings](https://i.imgur.com/GaseTxi.png) 18 | 19 | ### Account Selection 20 | 21 | ![Account Selection](https://i.imgur.com/QPoPVEB.png) 22 | 23 | ### GIF of theme 24 | 25 | ![GIF](https://i.imgur.com/fqoMVth.gif) 26 | 27 | ## Information 28 | 29 | A dark theme replicate my favorite Vs-code theme [Monokai](https://monokai.pro/vscode) 30 | 31 | Created by [MajorAmari](https://github.com/Majoramari). 32 | 33 | Note from TroubleChute: Thanks again for your work translating, and helping with RTL support @Majoramari! -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/themes/Monokai/info.yaml: -------------------------------------------------------------------------------- 1 | # This theme's name (Shows in-app, can be different to folder name) 2 | name: Monokai 3 | accent: "#fce566" 4 | # Required colors for updater & main UI (not HTML/CSS): 5 | # - Not including these will cause the updater to use default color scheme (Dracula Cyan) 6 | linkColor: "#fce566" # Accent color 7 | headerbarBackground: "#131313" 8 | mainBackground: "#222222" 9 | modalInputBackground: "#484848" 10 | borderedItemBorderColor: "#131313" 11 | buttonBackground: "#3f3f3f" 12 | buttonBackground-hover: "#595959" 13 | buttonBackground-active: "#202020" 14 | buttonColor: "#FFFFFF" 15 | buttonBorder: "#191919" 16 | buttonBorder-hover: "#FFFFFF" 17 | buttonBorder-active: "#fce566" 18 | windowControlsBackground: "#131313" 19 | windowControlsBackground-active: "#1b1b1b" 20 | windowControlsCloseBackground: "#1b1b1b" 21 | windowControlsCloseBackground-active: "#1b1b1b" 22 | # For platform shortcuts on desktop (For consistency make sure these match your CSS) 23 | platformLogoForeground: "#fce566" 24 | platformLogoBackground: "#212121" -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/themes/Nord/info.yaml: -------------------------------------------------------------------------------- 1 | # This theme's name (Shows in-app, can be different to folder name) 2 | name: Nord 3 | accent: "#5E81AC" 4 | # Required colors for updater & main UI (not HTML/CSS): 5 | # - Not including these will cause the updater to use default color scheme (Dracula Cyan) 6 | linkColor: "#88c0d0" # Accent color 7 | headerbarBackground: "#2E3440" 8 | mainBackground: "#2e3440" 9 | modalInputBackground: "#2E3440" 10 | borderedItemBorderColor: "#4C566A" 11 | buttonBackground: "#3B4252" 12 | buttonBackground-hover: "#434C5E" 13 | buttonBackground-active: "#4C566A" 14 | buttonColor: "#D8DEE9" 15 | buttonBorder: "#81A1C1" 16 | buttonBorder-hover: "#88C0D0" 17 | buttonBorder-active: "#8FBCBB" 18 | windowControlsBackground: "#2E3440" 19 | windowControlsBackground-active: "#2E3440" 20 | windowControlsCloseBackground: "#BF616A" 21 | windowControlsCloseBackground-active: "#BF616A" 22 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/themes/Old_Default/info.yaml: -------------------------------------------------------------------------------- 1 | # This theme's name (Shows in-app, can be different to folder name) 2 | name: Old Default 3 | accent: "#FFAA00" 4 | 5 | # Required colors for updater & main UI (not HTML/CSS): 6 | # - Not including these will cause the updater to use default color scheme (Dracula Cyan) 7 | linkColor: "#FFAA00" # Accent color 8 | headerbarBackground: "#14151E" 9 | mainBackground: "#28293A" 10 | modalInputBackground: "#212529" 11 | borderedItemBorderColor: "#888888" 12 | buttonBackground: "#333333" 13 | buttonBackground-hover: "#444444" 14 | buttonBackground-active: "#222222" 15 | buttonColor: "#FFFFFF" 16 | buttonBorder: "#888888" 17 | buttonBorder-hover: "#888888" 18 | buttonBorder-active: "#FFAA00" 19 | windowControlsBackground: "#14151E" 20 | windowControlsBackground-active: "#43444B" 21 | windowControlsCloseBackground: "#E81123" 22 | windowControlsCloseBackground-active: "#F1707A" 23 | # For platform shortcuts on desktop (For consistency make sure these match your CSS) 24 | platformLogoForeground: "#FFAA00" 25 | platformLogoBackground: "#202123" -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/themes/Tokyo_Night/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Tokyo Night 3 | 4 | ## Screenshots 5 | 6 | ### Platform Selection 7 | 8 | ![Platform Selection](https://i.imgur.com/bd7s2ZF.png) 9 | 10 | ### Location Modal 11 | 12 | ![Location Modal](https://i.imgur.com/ygtHaEp.png) 13 | 14 | ### Settings 15 | 16 | ![Settings](https://i.imgur.com/iVuSmIz.png) 17 | 18 | ### Account Selection 19 | 20 | ![Account Selection](https://i.imgur.com/M7FQNNs.png) 21 | 22 | ## Information 23 | 24 | A popular VS Code theme, ported to TCNO Account Switcher. 25 | 26 | ~ Created by Avo -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/themes/Tokyo_Night/info.yaml: -------------------------------------------------------------------------------- 1 | # This theme's name (Shows in-app, can be different to folder name) 2 | name: Tokyo Night 3 | accent: "#c0caf5" 4 | 5 | # Required colors for updater & main UI (not HTML/CSS): 6 | # - Not including these will cause the updater to use default color scheme (Dracula Cyan) 7 | linkColor: "#c0caf5" # Accent color 8 | headerbarBackground: "#16161E" 9 | mainBackground: "#1A1B26" 10 | modalInputBackground: "#1A1B26" 11 | borderedItemBorderColor: "#5f648b" 12 | buttonBackground: "#1E202E" 13 | buttonBackground-hover: "#252738" 14 | buttonBackground-active: "#24283b" 15 | buttonColor: "#c0caf5" 16 | buttonBorder: "#5f648b" 17 | buttonBorder-hover: "#c0caf5" 18 | buttonBorder-active: "#c0caf5" 19 | windowControlsBackground: "#16161E" 20 | windowControlsBackground-active: "#5f648b" 21 | windowControlsCloseBackground: "#16161E" 22 | windowControlsCloseBackground-active: "#5f648b" 23 | # For platform shortcuts on desktop (For consistency make sure these match your CSS) 24 | platformLogoForeground: "#1A1B26" 25 | platformLogoBackground: "#c0caf5" -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/themes/Tokyo_Night/style.css.map: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/themes/Tokyo_Night/style.css.map -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/accent.css: -------------------------------------------------------------------------------- 1 | /* 2 | Webcompiler doesn't like these values, so this needs to be in a seperate .css file. 3 | */ 4 | /* ReSharper disable CssNotResolved */ 5 | /* ReSharper disable RequiresFallbackColor */ /* Chrome is default the ONLY browser - CEF/WebView */ 6 | 7 | :root { 8 | /* All these extra accent steps and redefinitions are required for Windows accent options */ 9 | /* Elements that use these will be set by either Windows Accent or Theme */ 10 | --accent: #00d4ff; /* Must be HEX */ 11 | --accentHS: 190, 100%; /* "H, S%" from accent as HSL */ 12 | --accentL: 50%; /* "L" from accent HSL */ 13 | --accentInt: 0, 212, 255; /* accent as "r, g, b" */ 14 | /* Automatic accent variations */ 15 | /* ReSharper disable InvalidValue */ 16 | /* ReSharper disable Redundant */ 17 | --accentDark: hsl(var(--accentHS), calc(var(--accentL) - 20%)); 18 | --accentDarker: hsl(var(--accentHS), calc(var(--accentL) - 40%)); 19 | --accentDarkest: hsl(var(--accentHS), calc(var(--accentL) - 60%)); 20 | /* ReSharper restore Redundant */ 21 | /* ReSharper restore InvalidValue */ 22 | /* Notification colours */ 23 | --notification-main-bg: #274560; 24 | --notification-info-border: rgba(3, 166, 240, .25); 25 | --notification-info-highlight: rgb(3, 166, 240); 26 | --notification-success-border: rgba(80, 250, 123, .25); 27 | --notification-success-highlight: rgb(80, 250, 123); 28 | --notification-warning-border: rgba(255, 184, 108, .25); 29 | --notification-warning-highlight: rgb(255, 184, 108); 30 | --notification-error-border: rgba(255, 85, 85, .25); 31 | --notification-error-highlight: rgb(255, 85, 85); 32 | } 33 | 34 | ::selection { 35 | color: #FFF; 36 | background: var(--accent); 37 | } 38 | 39 | .linksList a, .fancyLink { 40 | color: var(--accent); 41 | cursor: pointer; 42 | margin: 1px 0; 43 | text-decoration: none; 44 | } 45 | 46 | /* ReSharper disable InvalidValue */ 47 | .linksList a:hover, .fancyLink:hover { 48 | color: hsl(var(--accentHS), calc(var(--accentL) - 5%)); 49 | } 50 | 51 | .linksList a:active, .fancyLink:active { 52 | color: hsl(var(--accentHS), calc(var(--accentL) - 10%)); 53 | } 54 | /* ReSharper restore InvalidValue */ 55 | 56 | /* ---------------------------------------- */ 57 | /* ANIMATIONS */ 58 | /* ---------------------------------------- */ 59 | 60 | /* ReSharper disable InvalidValue */ 61 | @keyframes pulse { 62 | 0% { 63 | transform: scale(1); 64 | box-shadow: 0 0 0 0 rgba(var(--accentInt), 70%); 65 | } 66 | 67 | 70% { 68 | transform: scale(1.02); 69 | box-shadow: 0 0 0 10px rgba(var(--accentInt), 0); 70 | } 71 | 72 | 100% { 73 | transform: scale(1); 74 | box-shadow: 0 0 0 10px rgba(var(--accentInt), 0); 75 | } 76 | } 77 | /* ReSharper restore InvalidValue */ -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/acclist.min.css: -------------------------------------------------------------------------------- 1 | .acc_list_actionbar,#acc_list,.headerbar,#window-title-modal{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;}.acc_list{gap:4px;display:grid;position:relative;grid-template-columns:repeat(auto-fill,100px);grid-auto-rows:minmax(min-content,max-content);width:100%;height:calc(100% - 42px);overflow-x:auto;overflow-y:auto;background:var(--accountListBackground);}.acc_list_item{border:.1em solid transparent;}.acc_list_item>*{pointer-events:none;}.acc_list_item .acc_note{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.acc_list_item .acc_stat{font-size:.8em;}.acc_list_item .acc_stat sup{margin-right:.4em;}.acc_list_item .acc_stat img{width:auto;height:auto;}.placeHolderAcc{width:100px;height:135px;border:2px dashed #039cbf;background:#13222f;}.placeHolderPlat{border:2px dashed #039cbf;background:#13222f;width:20vw;height:20vw;max-width:175px;max-height:175px;display:inline-block;margin:10px;vertical-align:middle;}.accountHover>label.acc{border:.1em solid #039cbf;background:#13222f;}input.acc{-moz-appearance:none;-webkit-appearance:none;display:none;margin:0;padding:0;}label.acc{-moz-transition:all 50ms ease-in;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none;-webkit-transition:all 50ms ease-in;-webkit-user-select:none;user-select:none;min-width:100px;max-width:100px;min-height:135px;height:100%;margin:-.1em;padding:.5em;border-width:.1em;border-style:solid;border-color:#000;border-color:rgba(0,0,0,0);color:#fff;text-align:center;cursor:pointer;transition:all 50ms ease-in;}label.acc.vac img{border:2px solid #f55;}label.acc img{-webkit-user-drag:none;display:inline-block;width:6em;height:6em;margin-bottom:.5em;border:2px solid #000;border:2px solid rgba(0,0,0,0);}label.acc img.status_vac{border:2px solid #f55!important;}label.acc img.status_limited{border:2px solid #ff0!important;}label.acc h6{max-width:9em;margin:0;overflow:hidden;font-size:1em;text-overflow:ellipsis;white-space:nowrap;}label.acc p{margin:0;color:#ddd;font-size:.75em;}input.acc:checked+label.acc.currentAcc{border-color:#8aff80;border-style:solid;}input.acc:checked+label.acc{border-color:#8be9fd;background:#274560;}label.acc.currentAcc{border-color:#8aff80;border-style:dashed;}.acc_list_actionbar{display:flex;flex-direction:row;width:100%;height:3.5em;padding:.25em .25em;overflow:hidden;background:#252a2e;color:#fff;}.acc_list_actionbar input{user-select:none;width:inherit;padding-left:1em;border:0;outline:0;background:none;color:#ddd;line-height:3em;}.acc_list_actionbar input::selection{user-select:none;background:none;color:#ddd;}.acc_list_actionbar>div{display:flex;flex-direction:row;justify-content:flex-end;width:100%;height:3em;}.acc_list_actionbar div .btn_login,.btn_close span{padding:.25em 5em;}.statusBar{position:relative;}.statusBar div,.statusBar input{position:absolute;width:100%;height:100%;}.statusBar input{z-index:1;}.statusBar div{z-index:5;}label h6 svg{fill:white;margin:2px;}.battleNetIcon{display:inline-block;width:15px;} -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/context_menu.min.css: -------------------------------------------------------------------------------- 1 | ::selection{color:#402b00;background:var(--accent);}.contextmenu{background:#253340;box-shadow:10px 10px 5px -3px rgba(0,0,0,.3);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:none;position:absolute;width:15em;max-height:29em;margin:0;padding:0;border-radius:.2em;list-style:none;z-index:999999;}.contextmenu li{border-left:1em solid transparent;transition:ease .2s;}.contextmenu li.hasSubmenu::after{font-family:"Font Awesome 5 Free";font-weight:900;font-size:.9em;margin-right:.3em;content:"";color:#fff;position:absolute;right:6px;transform:translateY(-165%);}.contextmenu li a{color:#fff!important;display:block;padding:10px;text-decoration:none;cursor:pointer;transition:ease .2s;}.contextmenu .submenu{display:none;min-height:100%;list-style:none;box-shadow:10px 10px 5px -3px rgba(0,0,0,.3);}.contextmenu .submenu li{color:#fff;list-style:none;}.contextmenu .submenu li a{color:#fff!important;}.contextmenu .submenu .paginationContainer{position:absolute;bottom:0;width:100%;border-left:0;}.contextmenu .submenu .paginationContainer .pagination{display:flex;justify-content:space-between;align-items:center;color:#fff;}.contextmenu .submenu .paginationContainer .pagination a{width:38px;text-align:center;border-left:0 solid var(--accent);transition:ease .075s;}.contextmenu .submenu .paginationContainer .pagination a:hover{background:#1b2737;}.contextmenu .submenu .paginationContainer .pagination a:hover i{color:var(--accent);}.contextmenu .submenu .paginationContainer .pagination a:first-of-type:hover{transition:ease .075s;border-left:2px solid var(--accent);}.contextmenu .submenu .paginationContainer .pagination a:last-of-type:hover{transition:ease .075s;border-right:2px solid var(--accent);}.contextmenu .submenu .paginationContainer .pagination span{border-bottom:2px solid var(--accent);}.contextmenu .submenu .contextSearch{border-left:2px solid transparent;}.contextmenu .submenu .contextSearch:hover{border-left:2px solid var(--accent);}.contextmenu .submenu .contextSearch input{margin:0;padding:9px;width:100%;}.contextmenu .submenu .contextSearch input:placeholder-shown{opacity:.8;}.contextmenu .submenu2>li>a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.contextmenu li:hover{border-left:2px solid #8be9fd;background:#1b2737;}.contextmenu li:hover a{color:#fff;}.contextmenu li:hover>.submenu{display:block;position:absolute;top:0;right:-15em;width:15em;padding:0;font-size:1em;animation:expand .3s;opacity:1;background:#253340;}@keyframes expand{from{width:13em;margin-right:2em;font-size:1em;}to{width:15em;margin-right:0;font-size:1em;}}.filteredItem,.pagedOutItem{display:none!important;} -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/font/Catamaran-VariableFont_wght.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/css/font/Catamaran-VariableFont_wght.ttf -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/font/Raleway-VariableFont_wght.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/css/font/Raleway-VariableFont_wght.ttf -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/open-iconic/ICON-LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Waybury 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/open-iconic/font/fonts/open-iconic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/css/open-iconic/font/fonts/open-iconic.eot -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/open-iconic/font/fonts/open-iconic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/css/open-iconic/font/fonts/open-iconic.otf -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/open-iconic/font/fonts/open-iconic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/css/open-iconic/font/fonts/open-iconic.woff -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/rtl.css: -------------------------------------------------------------------------------- 1 | /* Thank you https://github.com/Majoramari */ 2 | .row, 3 | ul.contextmenu, 4 | .modalFG, 5 | #window-title span, 6 | .rightContent, 7 | .infoWindow .rightContent { 8 | direction: rtl !important; 9 | margin-left: 0em; 10 | margin-right: 1em; 11 | } 12 | 13 | .linksList { 14 | align-items: baseline; 15 | } 16 | 17 | .rowSetting div.form-check { 18 | margin: 0 !important; 19 | } 20 | 21 | label { 22 | margin-right: 0.5em; 23 | margin-left: 0em; 24 | } 25 | 26 | .linksList a svg { 27 | margin-right: 0; 28 | } 29 | 30 | .modalIcoGitHub, 31 | .modalIcoNetworking, 32 | .modalIcoDoc { 33 | margin-left: 0.5rem; 34 | } 35 | 36 | #window-controls-modal { 37 | right: unset; 38 | left: 0; 39 | } 40 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/rtl.min.css: -------------------------------------------------------------------------------- 1 | .row,ul.contextmenu,.modalFG,#window-title span,.rightContent,.infoWindow .rightContent{direction:rtl!important;margin-left:0;margin-right:1em;}.linksList{align-items:baseline;}.rowSetting div.form-check{margin:0!important;}label{margin-right:.5em;margin-left:0;}.linksList a svg{margin-right:0;}.modalIcoGitHub,.modalIcoNetworking,.modalIcoDoc{margin-left:.5rem;}#window-controls-modal{right:unset;left:0;} -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/rtl.scss: -------------------------------------------------------------------------------- 1 | /* Thank you https://github.com/Majoramari */ 2 | .row, 3 | ul.contextmenu, 4 | .modalFG, 5 | #window-title span, 6 | .rightContent, 7 | .infoWindow .rightContent { 8 | direction: rtl !important; 9 | margin-left: 0em; 10 | margin-right: 1em; 11 | } 12 | 13 | .linksList { 14 | align-items: baseline; 15 | } 16 | 17 | .rowSetting div.form-check { 18 | margin: 0 !important; 19 | } 20 | 21 | label { 22 | margin-right: 0.5em; 23 | margin-left: 0em; 24 | } 25 | 26 | .linksList a svg { 27 | margin-right: 0; 28 | } 29 | 30 | .modalIcoGitHub, 31 | .modalIcoNetworking, 32 | .modalIcoDoc { 33 | margin-left: 0.5rem; 34 | } 35 | 36 | #window-controls-modal { 37 | right: unset; 38 | left: 0; 39 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/scrollbar.css: -------------------------------------------------------------------------------- 1 | /* ReSharper disable CssNotResolved */ 2 | ::-webkit-scrollbar { 3 | width: 10px; 4 | } 5 | 6 | ::-webkit-scrollbar-track { 7 | background: #1E2934; 8 | } 9 | 10 | /* This originally seemed like a good idea, but I can't get it to show properly without showing ALL THE TIME, or with some weird border. Leaving this for now. 11 | ::-webkit-resizer { 12 | background: #1E2934; 13 | }*/ 14 | 15 | ::-webkit-scrollbar-thumb { 16 | border-radius: 0.3em; 17 | background: #8BE9FD; 18 | } 19 | 20 | ::-webkit-scrollbar-thumb:hover { 21 | background: #8BE9FD; 22 | } 23 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/css/settings.min.css: -------------------------------------------------------------------------------- 1 | .toastarea{position:absolute;right:3px;bottom:3px;}.container{max-width:100%;overflow:visible;color:#fff;}.SettingsHeader{color:#fff;font-weight:bold;padding:.25em;margin-bottom:.5em;}h1.SettingsHeader{border-bottom:2px solid var(--accent);}h2.SettingsHeader{padding:.1em .5em;margin-top:.5em;border-bottom:1px solid var(--accent);width:fit-content;}.acc_list_actionbar>div .btn_login,.btn_close span{padding:.25em 5em;}.settingsCol .buttoncol button.btn_app_login{width:250px;margin:1em 0;}div.form-text{color:#fff;font-size:12px!important;}input[type=number],input[type=text],input[type=password],textarea{-moz-appearance:textfield;display:inline-block;margin:0 .5em 2px .5em;padding:.5em;border:0;border-bottom:2px solid transparent;outline:0;background:#070a0d;color:#fff;}textarea{border-bottom:2px solid transparent;resize:both;}input[type=number]{border-bottom:2px solid #888;}input[type=number]:focus,input[type=text]:focus,input[type=password]:focus,textarea:focus{border-bottom:2px solid var(--accent);}input[type=number]::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}label{margin:0 .5em;}.form-check{display:inline-block;padding:0;}.form-check .form-check-input:disabled{opacity:0;}.form-check .form-check-input:disabled~label,.form-check .form-check-input[disabled]~label{opacity:.5;}.form-check label{margin:0;}.form-check label:nth-of-type(2){margin:0 1rem 0 .5rem;}input[type=checkbox]{opacity:0;z-index:-1;}input[type=checkbox]+label{display:inline-block;position:relative;width:20px;height:20px;overflow:hidden;cursor:pointer;-moz-transition:.5s ease all;-webkit-transition:.5s ease all;border:1px solid #6272a4;background:none;transition:.5s ease all;vertical-align:middle;}input[type=checkbox]:checked+label{border:1px solid #6272a4;background:var(--accent);}.settingsCol{position:relative;}.settingsCol:first-child{margin-top:1em;}.settingsCol .toastarea{display:flex;position:fixed;top:35px;right:16px;bottom:auto;flex-direction:column;align-items:flex-end;z-index:5000;}.settingsCol .buttoncol{position:relative;width:100%;height:3.6em;}.settingsCol .buttoncol :first-child{left:0;}.settingsCol .buttoncol :last-child{right:0;}.settingsCol .buttoncol button:focus{box-shadow:none;}.settingsCol .buttoncol button:disabled,.settingsCol .buttoncol button[disabled]{opacity:.5;cursor:default;}.settingsCol .buttoncol button,.settingsCol .buttoncol .button{position:absolute;width:49%;}.btn_close{right:0!important;left:unset!important;width:35%!important;}.col_close{margin-top:2em;margin-bottom:4em;}.preview_element{margin:1em 2.5%;border:var(--accent) 1px solid;position:relative;}.preview_element .notification-container{position:relative;z-index:10;}.preview_element .SettingsHeader{padding-top:1em;} -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/favicon.ico -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/BasicDefault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/BasicDefault.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/BattleNetDefault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/BattleNetDefault.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/QuestionMark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/QuestionMark.jpg -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/TcNo500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/TcNo500.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/TcNoAccSw-Icon-100x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/TcNoAccSw-Icon-100x100.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/TcNo_Logo_Flat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/ico_BattleNetDamageIcon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/ico_BattleNetSupportIcon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/ico_BattleNetTankIcon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/ico_discord.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/ico_doc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/ico_github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/ico_kofi.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/ico_patreon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-10.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-12.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-15.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-20.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-24.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-k-30.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-10.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-12.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-15.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-20.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-24.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/max-w-30.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-10.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-12.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-15.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-20.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-24.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-k-30.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-10.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-12.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-15.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-20.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-24.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/min-w-30.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-10.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-12.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-15.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-20.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-24.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-k-30.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-10.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-12.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-15.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-20.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-24.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/icons/restore-w-30.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/noise.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Albion Online.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Arena Breakout Infinite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/BattleNet.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Delta Force Hawk Ops.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Discord Canary.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Discord PTB.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/DiscordDefault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/platform/DiscordDefault.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/EA Desktop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Epic Games.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/EpicDefault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/platform/EpicDefault.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Escape from Tarkov.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/GOG Galaxy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/GeForce Now.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Honkai StarRail.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Jagex.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Magic Arena.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/OBS Studio.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Oculus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/PS Remote Play.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Riot Games.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/RiotDefault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/img/platform/RiotDefault.png -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/Rockstar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/discord.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/glass.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/origin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/steam.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/img/platform/ubisoft.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/js/ace/ext-error_marker.js: -------------------------------------------------------------------------------- 1 | ; (function() { 2 | ace.require(["ace/ext/error_marker"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/js/ace/ext-linking.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var n=e.editor,r=e.getAccelKey();if(r){var n=e.editor,i=e.getDocumentPosition(),s=n.session,o=s.getTokenAt(i.row,i.column);t.previousLinkingHover&&t.previousLinkingHover!=o&&n._emit("linkHoverOut"),n._emit("linkHover",{position:i,token:o}),t.previousLinkingHover=o}else t.previousLinkingHover&&(n._emit("linkHoverOut"),t.previousLinkingHover=!1)}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("../editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}}),t.previousLinkingHover=!1}); (function() { 2 | ace.require(["ace/ext/linking"], function(m) { 3 | if (typeof module == "object" && typeof exports == "object" && module) { 4 | module.exports = m; 5 | } 6 | }); 7 | })(); 8 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/js/ace/ext-rtl.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/ext/rtl",["require","exports","module","ace/editor","ace/config"],function(e,t,n){"use strict";function s(e,t){var n=t.getSelection().lead;t.session.$bidiHandler.isRtlLine(n.row)&&n.column===0&&(t.session.$bidiHandler.isMoveLeftOperation&&n.row>0?t.getSelection().moveCursorTo(n.row-1,t.session.getLine(n.row-1).length):t.getSelection().isEmpty()?n.column+=1:n.setPosition(n.row,n.column+1))}function o(e){e.editor.session.$bidiHandler.isMoveLeftOperation=/gotoleft|selectleft|backspace|removewordleft/.test(e.command.name)}function u(e,t){var n=t.session;n.$bidiHandler.currentRow=null;if(n.$bidiHandler.isRtlLine(e.start.row)&&e.action==="insert"&&e.lines.length>1)for(var r=e.start.row;r { 33 | $(listAccounts).append(``); 34 | }); 35 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/prog_icons/program.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/prog_icons/program.ico -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Server/wwwroot/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Tray/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "TcNo-Acc-Switcher-Tray": { 4 | "commandName": "Project" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Tray/Resources/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Tray/Resources/icon.ico -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Tray/TcNo-Acc-Switcher-Tray.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WinExe 5 | net8.0-windows7.0 6 | TcNo_Acc_Switcher_Tray 7 | true 8 | favicon.ico 9 | TroubleChute (Wesley Pyburn) 10 | TcNo Account Switcher 11 | Copyright © TroubleChute (Wesley Pyburn) 2019-2024 12 | https://github.com/TcNobo/TcNo-Acc-Switcher 13 | https://github.com/TcNobo/TcNo-Acc-Switcher 14 | TcNoAccSw-Icon-100x100.png 15 | false 16 | x64 17 | 18 | 19 | 20 | $(SolutionDir)\TcNo-Acc-Switcher-Client\bin\Debug\ 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | True 35 | True 36 | Resources.resx 37 | 38 | 39 | 40 | 41 | 42 | ResXFileCodeGenerator 43 | Resources.Designer.cs 44 | 45 | 46 | 47 | 48 | 49 | True 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Tray/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Tray/favicon.ico -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Updater/App.xaml: -------------------------------------------------------------------------------- 1 |  14 | 15 | 19 | 20 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Updater/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Updater/Logger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Reflection; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace TcNo_Acc_Switcher_Updater 10 | { 11 | public class Logger 12 | { 13 | private static Logger _instance; 14 | private static readonly object LockObj = new(); 15 | private StreamWriter _logWriter; 16 | 17 | private Logger() { } 18 | 19 | public static Logger Instance 20 | { 21 | get 22 | { 23 | lock (LockObj) 24 | { 25 | return _instance ??= new Logger(); 26 | } 27 | } 28 | } 29 | 30 | public static StreamWriter LogWriter 31 | { 32 | get 33 | { 34 | lock (LockObj) 35 | { 36 | return Instance._logWriter ??= InitLogWriter(); 37 | } 38 | } 39 | } 40 | 41 | public static void WriteLine(string line) 42 | { 43 | LogWriter.WriteLine(line); 44 | LogWriter.Flush(); 45 | } 46 | 47 | private static string AppDataFolder => 48 | Directory.GetParent(Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location) ?? string.Empty)?.FullName; 49 | private static StreamWriter InitLogWriter() 50 | { 51 | var logPath = File.Exists(Path.Join(AppDataFolder, "userdata_path.txt")) 52 | ? UGlobals.ReadAllLines(Path.Join(AppDataFolder, "userdata_path.txt"))[0].Trim() 53 | : Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "TcNo Account Switcher\\"); 54 | 55 | if (!Directory.Exists(logPath)) Directory.CreateDirectory(logPath); 56 | logPath = Path.Join(logPath, "UpdaterLog.txt"); 57 | 58 | if (File.Exists(logPath)) File.WriteAllText(logPath, string.Empty); 59 | 60 | return new StreamWriter(logPath, append: true); 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Updater/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "TcNo-Acc-Switcher-Updater": { 4 | "commandName": "Project", 5 | "remoteDebugEnabled": false, 6 | "remoteDebugMachine": "DESKTOP-C6ID9T9", 7 | "authenticationMode": "Windows" 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Updater/TcNo-Acc-Switcher-Updater.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WinExe 5 | net8.0-windows7.0 6 | TcNo_Acc_Switcher_Updater 7 | true 8 | favicon.ico 9 | TcNo Account Switcher - Server 10 | TroubleChute (Wesley Pyburn) 11 | Updater for the TcNo Account Switcher 12 | Copyright © TroubleChute (Wesley Pyburn) 2019-2024 13 | https://github.com/TcNobo/TcNo-Acc-Switcher 14 | https://github.com/TcNobo/TcNo-Acc-Switcher 15 | x64 16 | 17 | 18 | 19 | 20 | 21 | 22 | NU1701 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /TcNo-Acc-Switcher-Updater/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/TcNo-Acc-Switcher-Updater/favicon.ico -------------------------------------------------------------------------------- /_Updater_Wrapper/_Updater_Wrapper.vcxproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | Cpp17 -------------------------------------------------------------------------------- /_Updater_Wrapper/_Updater_Wrapper.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | 23 | 24 | Resource Files 25 | 26 | 27 | 28 | 29 | Header Files 30 | 31 | 32 | 33 | 34 | Resource Files 35 | 36 | 37 | -------------------------------------------------------------------------------- /_Updater_Wrapper/_Wrapper.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/_Updater_Wrapper/_Wrapper.rc -------------------------------------------------------------------------------- /_Updater_Wrapper/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by _Wrapper.rc 4 | // 5 | #define IDI_ICON1 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 101 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: TcNo-Acc-Switcher-Server/Resources/en-US.yml 3 | translation: /TcNo-Acc-Switcher-Server/Resources/%locale%.yml 4 | -------------------------------------------------------------------------------- /other/NSIS/img/Convert.bat: -------------------------------------------------------------------------------- 1 | magick HeaderImage.png BMP2:HeaderImage.bmp 2 | magick SideBanner.png BMP2:SideBanner.bmp -------------------------------------------------------------------------------- /other/NSIS/img/HeaderImage.afphoto: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/NSIS/img/HeaderImage.afphoto -------------------------------------------------------------------------------- /other/NSIS/img/HeaderImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/NSIS/img/HeaderImage.bmp -------------------------------------------------------------------------------- /other/NSIS/img/HeaderImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/NSIS/img/HeaderImage.png -------------------------------------------------------------------------------- /other/NSIS/img/SideBanner.afphoto: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/NSIS/img/SideBanner.afphoto -------------------------------------------------------------------------------- /other/NSIS/img/SideBanner.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/NSIS/img/SideBanner.bmp -------------------------------------------------------------------------------- /other/NSIS/img/SideBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/NSIS/img/SideBanner.png -------------------------------------------------------------------------------- /other/NSIS/img/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/NSIS/img/icon.ico -------------------------------------------------------------------------------- /other/NSIS/nsis7zplugin.ps1: -------------------------------------------------------------------------------- 1 | # Installer for the NSIS 7z plugin. 2 | # More info on this plugin: https://nsis.sourceforge.io/Nsis7z_plug-in 3 | # This is used in the AppVeyor build process. 4 | # Results in a much smaller compressed install file. Worth the time and effort! 5 | 6 | $downloadUrl = "https://nsis.sourceforge.io/mediawiki/images/6/69/Nsis7z_19.00.7z" 7 | $destinationFolder = "C:\Program Files (x86)\NSIS" 8 | $tempDownloadPath = "$env:TEMP\Nsis7z_19.00.7z" 9 | $extractPath = "$env:TEMP\NsisExtracted" 10 | 11 | Invoke-WebRequest -Uri $downloadUrl -OutFile $tempDownloadPath 12 | 13 | # Create a temporary extraction folder 14 | if (-Not (Test-Path -Path $extractPath)) { 15 | New-Item -ItemType Directory -Path $extractPath | Out-Null 16 | } 17 | 18 | # Extract the 7z file (requires 7-Zip installed and in PATH) 19 | & 7z x "$tempDownloadPath" -o"$extractPath" -y 20 | 21 | # List of folders to extract and merge 22 | $foldersToMerge = @("Contrib", "Examples", "Plugins") 23 | 24 | # Merge the extracted folders into the destination 25 | foreach ($folder in $foldersToMerge) { 26 | $sourcePath = Join-Path -Path $extractPath -ChildPath $folder 27 | $destinationPath = Join-Path -Path $destinationFolder -ChildPath $folder 28 | 29 | if (Test-Path -Path $sourcePath) { 30 | Copy-Item -Path $sourcePath\* -Destination $destinationPath -Recurse -Force 31 | } 32 | } 33 | 34 | # Clean up temporary files 35 | Remove-Item -Path $tempDownloadPath -Force 36 | Remove-Item -Path $extractPath -Recurse -Force 37 | 38 | Write-Host "Download, extraction, and merge complete." 39 | -------------------------------------------------------------------------------- /other/img/Banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/Banner.png -------------------------------------------------------------------------------- /other/img/DownloadBeta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/DownloadBeta.png -------------------------------------------------------------------------------- /other/img/DownloadLatest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/DownloadLatest.png -------------------------------------------------------------------------------- /other/img/DownloadLatestNEW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/DownloadLatestNEW.png -------------------------------------------------------------------------------- /other/img/FAQButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/FAQButton.png -------------------------------------------------------------------------------- /other/img/JetBrains_Banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/JetBrains_Banner.png -------------------------------------------------------------------------------- /other/img/Program_Icons/Icons.afphoto: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/Program_Icons/Icons.afphoto -------------------------------------------------------------------------------- /other/img/Program_Icons/Icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /other/img/Program_Icons/Question.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /other/img/TcNoAccSw-Icon-1000x1000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/TcNoAccSw-Icon-1000x1000.png -------------------------------------------------------------------------------- /other/img/TcNoAccSw-Icon-100x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/TcNoAccSw-Icon-100x100.png -------------------------------------------------------------------------------- /other/img/Themes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/Themes.png -------------------------------------------------------------------------------- /other/img/WikiButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/WikiButton.png -------------------------------------------------------------------------------- /other/img/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/icon.ico -------------------------------------------------------------------------------- /other/img/icon/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/icon/icon16.png -------------------------------------------------------------------------------- /other/img/icon/icon256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/icon/icon256.png -------------------------------------------------------------------------------- /other/img/icon/icon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/icon/icon32.png -------------------------------------------------------------------------------- /other/img/icon/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TCNOco/TcNo-Acc-Switcher/2c7257c48f0f796a4cecbc76b31c6e4fe39bfe6a/other/img/icon/icon48.png -------------------------------------------------------------------------------- /other/img/web.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Website 10 | 11 | 12 | tcno.co 13 | 14 | 15 | -------------------------------------------------------------------------------- /other/img/youtube.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /other/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "other", 3 | "version": "1.0.0", 4 | "main": "upload-to-ftp.js", 5 | "scripts": { 6 | "test": "echo \"Error: no test specified\" && exit 1" 7 | }, 8 | "type": "module", 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "description": "", 13 | "dependencies": { 14 | "axios": "^1.7.5", 15 | "dotenv": "^16.4.5", 16 | "globby": "^14.0.2", 17 | "p-limit": "^6.1.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /other/tcno.co/api/crowdin/index.php: -------------------------------------------------------------------------------- 1 | '.$user["data"]["username"]; 36 | $in = ""; 37 | if (array_key_exists("permissions", $user["data"])){ 38 | foreach ($user["data"]["permissions"] as $key => $value){ 39 | if ($value == "proofreader"){ 40 | if ($in == ""){ 41 | $in = " - ".$key; 42 | }else{ 43 | $in = $in.", ".$key; 44 | } 45 | } 46 | } 47 | } 48 | print($text.$in.""); 49 | } -------------------------------------------------------------------------------- /runas/Program.cs: -------------------------------------------------------------------------------- 1 | // TcNo Account Switcher - A Super fast account switcher 2 | // Copyright (C) 2019-2024 TroubleChute (Wesley Pyburn) 3 | // This program is free software: you can redistribute it and/or modify 4 | // it under the terms of the GNU General Public License as published by 5 | // the Free Software Foundation, either version 3 of the License, or 6 | // (at your option) any later version. 7 | // This program is distributed in the hope that it will be useful, 8 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | // GNU General Public License for more details. 11 | // 12 | // You should have received a copy of the GNU General Public License 13 | // along with this program. If not, see . 14 | 15 | // See https://aka.ms/new-console-template for more information 16 | 17 | 18 | // What is the purpose of "runas"? 19 | // Put simply: After the addition of the 'wrapper' to auto-install required .NET runtimes, 20 | // using Process.Start() the process is started as a child, and ends when TcNo Account Switcher closes. 21 | // This process starts another process (detatched) and can close itself normally. 22 | // Hence, hopefully, avoiding the above issue. 23 | 24 | // Required arguments: 25 | // runas.exe <1/0 for admin> 26 | 27 | using System.ComponentModel; 28 | using System.Diagnostics; 29 | 30 | if (args.Length < 2) 31 | { 32 | Console.WriteLine("Please do not launch this process directly."); 33 | Environment.Exit(1); 34 | } 35 | 36 | var argString = ""; 37 | if (args.Length > 2) 38 | { 39 | for (var i = 2; i < args.Length; i++) 40 | { 41 | argString += args[i] + " "; 42 | } 43 | } 44 | 45 | try 46 | { 47 | Directory.SetCurrentDirectory(Path.GetDirectoryName(args[0]) ?? Directory.GetCurrentDirectory()); 48 | 49 | Process.Start(new ProcessStartInfo 50 | { 51 | FileName = args[0], 52 | UseShellExecute = true, 53 | RedirectStandardError = false, 54 | RedirectStandardOutput = false, 55 | Arguments = argString, 56 | Verb = args[1] == "1" ? "runas" : "", 57 | WorkingDirectory = Path.GetDirectoryName(args[0]) ?? Directory.GetCurrentDirectory() 58 | }); 59 | } 60 | catch (Win32Exception e) 61 | { 62 | if (e.HResult != -2147467259) // Not because it was cancelled by user 63 | throw; 64 | } -------------------------------------------------------------------------------- /runas/runas.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | net8.0 6 | enable 7 | enable 8 | $(SolutionDir)\TcNo-Acc-Switcher-Client\bin\runas\ 9 | x64 10 | 11 | 12 | 13 | --------------------------------------------------------------------------------