Giter Club home page Giter Club logo

website's Introduction

Website

This repository contains the source code for our website. All contributions should go in the dev branch.

Localization

If you'd like to help localize Pretendo Network, you can check out our project on Weblate.

Translation status

Join our Discord:

website's People

Contributors

amineflex avatar ashquarky avatar caramelkat avatar creeper0k avatar danielectra avatar dependabot[bot] avatar directorreiuji avatar doodapooda avatar erdbeerbaerlp avatar erenix05 avatar experiencersinternational avatar eyadplayz avatar gitlimes avatar hareon avatar jipfr avatar jonbarrow avatar mininuxdev avatar mrjvs avatar mythicalplayz avatar nervi05 avatar ninstar avatar playsenge avatar sjkim04 avatar steffospieler avatar superwhiskers avatar tescu48 avatar therealprocyon avatar vasilisthepikachu avatar weblate avatar zontellektuel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

website's Issues

[Enhancement]: Update FAQ/installation docs to note that we require real consoles, even with emulators

Checked Existing

  • I have checked the repository for duplicate issues.

What enhancement would you like to see?

Right now there seems to be some confusion about whether or not you need a real console to use our servers, and why we require them. Many people understandably have the opinion that we should not have this restriction for various reasons, and many question the requirement, and some just have no idea what we support. This especially became an issue recently when people began to think we banned 1,300 people/consoles at once, which was not true. Adding this to the website should help clear this up for the majority of people.

My suggestion would be to:

  • Add the actual information/reasoning to the FAQ, near the "do we support emulators" question
  • Add links to the FAQ answer in the installation docs.

That way the information is kept where it is relevant and not duplicated on multiple pages.

Any other details to share? (OPTIONAL)

To answer the question (both for anyone looking to implement these changes, and for those curious):

Yes, even when using emulators, we require the use of a real console. If using an emulator you MUST dump the relevant system data from a legitimate console to go online on our servers

The reason is simple: security. Each console contains unique data which is tied to that specific unit, and that data is cryptographically signed by Nintendo with a private key only Nintendo has. These take the form of a "Device Certificate" (which exists on both the Wii U and 3DS) and your LCFS (LocalFriendCodeSeed, which only exists on the 3DS). These both have the aforementioned signatures, which cannot be created by anyone besides Nintendo, but CAN be validated by anyone due to the public key being known. That makes them impossible to spoof/modify, and are our only true way of issuing full console bans.

Without the ability to issue console bans, we are effectively unable to keep cheaters off of our servers long term. We always start with account bans, but if a console is the source of many banned accounts then we will outright ban the console. Many people have tried to suggest alternatives, so I'll go ahead and answer the most common suggestions I've seen:

  • "Just ban accounts" - Account bans alone are ineffective, since anyone can infinitely generate new accounts both on the website and on their console. There is nothing stopping someone from just making hundreds of new accounts each time they get banned. While we always ban accounts first, if a user continues to make new accounts and breaking our rules then we need a way to keep them off the servers permanently
  • "Ban IPs not consoles" - IP bans are ineffective as they only last as long as the user is on the same IP address, which is especially common on the 3DS given that it is a mobile console. Once a user's IP changes, then their console can immediately go back online. An IP address can be changed in many ways, such as:
    • Using a proxy server
    • Using a VPN
    • Changing your ISP
    • Moving your network (such as moving to a new house/city)
    • Changing networks (going to a friend's house, public wifi, using a mobile hotspot, etc.)
    • Having a dynamic IP address (not everyone has a static IP, and their IP will naturally change even without doing anything)
  • "Ban VPNs'' - VPN bans are ineffective since again there are multiple ways to change an IP address, and it's just a cat and mouse game where we always lose. VPN banning is not a trivial task, as there's no true "source of truth" for EVERY VPN providers IPs/ranges, and a provider can change them at any time. Not to mention that there are perfectly legitimate reasons to use a VPN, and a VPN ban would block those legitimate users. There's also nothing stopping someone from renting a cheap $5/m VPS and running their own proxy/VPN that way
  • "Generate/sign your own dumps"/"Assign your own IDs to emulators"/some variation of this kind of idea - This has a combination of all the previously mentioned issues. There's no solid, reliable, way to prevent people from infinitely generating these types of files/IDs/whatever
    • If we handed them out with no verifications, then there's literally nothing stopping someone from just mass generating them
    • If we generate them per account, then a "console ban" is as effective as an account ban. Users could simply create new accounts to get new files
    • If we generate them per IP address, then a "console ban" is as effective as an IP ban. Users could simply use a different IP address to get new files. If we could effectively limit this to a single IP, we would just do IP bans
    • Etc.

Trust me. We have spent several years thinking about ways to try and do this, and there simply isn't. There isn't an idea that you can come up with that we haven't already considered. The only effective, long term, way to permanently keep a console/player off our servers is to ban something which can't be infinitely generated/modified. That means it has to be:

  • Unique (to only target specific devices)
  • Signed (to prevent tampering)
  • Users can't sign new data (to prevent generation)

And only device certificates/LocalFriendCodeSeeds match this criteria. Thus the requirement for a real console, even when using an emulator.

In the past we DID try to allow emulator users online without real console dumps, and it was immediately abused by cheaters to the degree that we HAD to take this away.

Feature request: Status page for the servers

Why?

A question often asked on the discord is if the servers are online or not, which made me think that maybe a dedicated part of the website could be a status page where maintenance and other issues regarding the operation of the servers could be a nice addition to have. It makes it easy for us regular players to be able to see if there is maintenance on any servers or if something random has made them go offline :)

Uptime Kuma is one software I personally use and has worked great for me! I don't know how it would work in a more public setting but I assume similar software should be easy to find.

Example sites

https://www.nintendo.co.jp/netinfo/en_US/index.html
https://steamstat.us/

Thank you for this amazing project and I look forward to seeing it grow <3

[Enhancement]: Update the Blog RSS Feed to include the content

Checked Existing

  • I have checked the repository for duplicate issues.

What enhancement would you like to see?

Currently, the RSS Feed only includes the title and the image. Some RSS feed readers don't support showing the actual post like this, so I'd love to see the actual content in the feed. (e.g. <item>[Other tags...]<content:encoded>CONTENT</content:encoded></item>)

Also, currently the feed doesn't pass the validation checker, so this would be at least something that could hopefully be fixed: https://validator.w3.org/feed/check.cgi?url=https%3A%2F%2Fpretendo.network%2Fblog%2Ffeed.xml

Any other details to share? (OPTIONAL)

No response

Wii U guide should tell users to install Nimble

To access Wara Wara Plaza, Nimble is seemingly required but the Wii U guide does not mention this at all.

The only way users find out about installing Nimble at the moment is if they join the Discord server, which shouldn't be required.

Redirection Not working for external Sites

For example I want to login into my account from the MK8 Website and the login for pretendo website has the redirect parameter, however, after logging in it takes me to the home Page of my account and not the MK8 Website

account create error handling

update: one weird error remains: Username contains invalid characters

when making an account, all input validation errors are not shown to the user.
cookie with error message is being made but not being shown.
this is most likely the problem with people not being able to make accounts.

Make a server status section

I recently saw the amazing news that you can now play some games such as Mario Kart 7 online on Wiimmfi, but the problem is the fact that I can't find anyone who's playing.

I'm not sure particularly whether it's due to me not running the latest version of Nimbus (I don't have an SD card reader currently on me so I can't update) (edit: as I was writing this I found someone), or because the servers are dead.

I would like to have the ability to see whether someone is on Pretendo's servers by adding a server status section like what Wiimmfi has so I can see whether people are playing. Thank you!

Screenshot_2023-10-15-15-59-25-216_com microsoft emmx

Pokemon Ultra Moon & ultra sun

Hello i recently found out about pretendo so i installed it but when i tried it on an pokemon game it didnt work so if you could fix this thank you

allow importing Mii Studio codes for user Mii [Feature Request]

pretty self-explanatory - an option to import (or maybe even export, for those wanting to save their user Mii build through Pretendo's website) Mii Studio codes as user Miis. the official Mii Studio uses Mii Studio codes to locally store Mii data whenever you are editing the Mii, so it can pull it again later if the page refreshes or is lost. this is how it does the "continue editing your Mii?" and my Mii Studio Mii Loader reads and writes from this to save and load Mii Studio codes, and i think it would be incredibly useful to have for Pretendo as well. it's a very convenient way of sharing Miis!

note that since it's Mii Studio Mii data, Mii Studio codes do not contain the Mii name, which should be perfectly fine but i wanted to mention it anyways

an example of a Mii Studio code:
06002f030a030426020c030805040002090009040003010803020a0601665f04000214031303160d04000a040109
that results in this Mii:
image

the Mii Library also has Mii Studio codes at the bottom of every Mii's page if you need more examples.

[Enhancement]: Add docs for using Pablo's Citra fork online

According to PabloMK7/citra#44, his fork of Citra is actually compatible with Pretendo, just by installing the patches! And given that Citra is no longer maintained anyway due to the DMCA, the docs needed to be updated anyway:

At the moment Citra does not support true online play, so it doesn't work with Pretendo. Moreover, it shows no sign of supporting true play in the future.

Mikage, a 3DS emulator for mobile devices, may provide support in the future, though this is far from certain.

[Enhancement]: Complete rewrite

Checked Existing

  • I have checked the repository for duplicate issues.

What enhancement would you like to see?

Completely rewrite the website in something modern. Currently the website is a HUGE mess, full of technical debt, outdated practices, confusing project layouts, etc.

@hauntii has already rewritten our admin panel in React, and @gitlimes also already suggested rewriting the website in React. Given that, plus to creation of Yeah! (our JSX factory for NWF apps), it makes sense to use something React-like here as well.

(I know this has already been discussed internally with both @hauntii and @gitlimes, but I wanted to add this to the task tracker)

Any other details to share? (OPTIONAL)

No response

[Enhancement]: Completely redo the "progress" page and add dedicated game pages

Checked Existing

  • I have checked the repository for duplicate issues.

What enhancement would you like to see?

This expands on (and will likely replace) issues such as #309 and #227. This can possibly be incorporated into #282, as it as a similar goal, but it may also be worth doing in a different PR (since the goals do differ a bit) or waiting for #307 to be closed (which @hauntii is working on).

Currently the progress page has 2 "issues":

  1. The "features" list is VERY cluttered. It just shows a massive list of all the items, not taking into account how many items there are. This results in a MASSIVE page with tons of scroll/empty space in cases where there are a lot of elements
  2. There are only pages for games in active development. This is intentional, and not really an "issue" (especially since it relies on GitHub Projects, which currently need to be linked to repos). However it means people keep making issues like these:

The best solution would likely be to:

  1. Stop relying on GitHub Projects for task lists. This way we can add data for games which don't have repos yet. While not REQUIRED to be linked to repos, GitHub seems to be farily unstable when it comes to moving a project between repos. We've ran into this many times when deleting/renaming repos and then trying to use the GraphQL API to query for the projects data, which results in vague errors until the project is completely deleted and remade from scratch
  2. Either remove/limit the number of items shown on the "progress" page to prevent the aforementioned long scrolling
  3. Create dedicated pages for each game to show ALL the details. This would include data such as:
    • Compatibility
    • In-game features
    • Miiverse features
    • Public/beta status
    • Known bugs
    • Links to places like GitHub?
    • Player counts/other stats?
  4. Add listings/pages for ALL games under our scope, even those which are not supported or in development. These should be marked as such with a message indicating that support WILL come, and only exist to prevent issues asking for games to be supported

This will likely require several changes to our backends, since we would need to start tracking game progress data ourselves rather than piggy-backing off GitHub Projects.

Any other details to share? (OPTIONAL)

We can easily take inspiration for the 3rd point from other projects. Most every system emulator follows this sort of design, having a "main" titles list showing general compatibility followed by dedicated pages with detailed stats:

[Enhancement]: Restore the online files download for smaller servers

Checked Existing

  • I have checked the repository for duplicate issues.

What enhancement would you like to see?

The website used to have a feature that allowed accounts to download fake Cemu online files instead of requiring accounts to be linked and dumped from a Wii U. I understand that this feature was purposefully removed for security reasons, so that console bans could be reliably enforced, but this would not be an issue on smaller private self-hosted servers.

I previously created a messy patch to restore this feature, but it would be better to have configurable support for it in the website and account servers.

Any other details to share? (OPTIONAL)

This would require several components that would be controlled by an environment variable like PN_WEBSITE_ENABLE_FAKE_ONLINE_FILES.

  • The POST /online-files route, which should only be enabled if the variable is set
  • The "Download online files" button on the account page, which should only be in the HTML if the variable is set
  • The client-side JS that handles getting the online files, which should just not use that functionality if the button is missing

Additionally, there would need to be an option in the account server to bypass device certificate verification for these fake online files. Of course, it should be disabled by default and clearly labeled as dangerous. I previously created a basic patch for this, but I don't believe that it is a good solution because it does not set request.device, which could break things downstream.

I don't know if it would also be possible to create fake Citra online files.

mii editor failing to save or load

few issues:

  • new accounts get invalid mii data
  • mii editor does a http:// request instead of // so it cannot save
  • api.pretendo.cc does not have a valid certificate, so will fail to save

to fix number 1, I recommend a modal that says something like "detected broken miidata [make new MII] [go back]"


encoded mii data from new accounts that doesnt work:

AwAAQOlVognnx0GC2qjhdwOzuI0n2QAAAGBqAHYAcwBqAHYAcwAyAAAAAAAAAEBAAAAhAQJoRBgmNEYUgRIXaA0AACkAUkhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwu

[Enhancement]: Move FAQ to dedicated pages

Checked Existing

  • I have checked the repository for duplicate issues.

What enhancement would you like to see?

Currently our FAQ is "fine", but it's very small and slapped onto the home page. Building off of #317, which is going to require a much longer FAQ answer, it might be a good idea to consider making dedicated FAQ pages. Such as:

Any other details to share? (OPTIONAL)

No response

PNID cannot be the same as NNID warning on 3ds docs

I believe a warning should be added on the 3ds docs to ensure nobody makes this issue as it is just a hassle to deal with, as well as no account deletion being a thing, so it's just a mess to deal with.
right now the login/acc creation section of the doc reads:
"The 3DS does not rely on NNIDs for the vast majority of it's game servers. Because of this, using a PNID is also not required for most games

Setting up a PNID on the 3DS is the same as setting up a NNID. You may either create the PNID on your console, or register from an account

It is recommended to register the PNID on your device at this time, as registering on the website does not currently allow you to change your user data"

This currently doesn't make it clear that the PNID cannot be the same as the NNID, and I think there should be something added on the docs to make it clear to make life easier for everyone. Thank you

Password reset

I'm interested in implementing password reset. The below is for a browser-based flow. I have no idea how this could be done from a Wii U console. The API part is here: PretendoNetwork/account#21

I suggest two new forms

Start flow

Currently linked from the log in form, but broken.

URL: https://pretendo.network/account/passwordreset
Parameters: none
Fields: email, captcha_response
Corresponding API endpoint: /v1/passwordreset

Update password

To be linked from password reset e-mail.

URL: https://pretendo.network/account/password
Parameters: access_token
Fields: password, password_confirm
Corresponding API endpoint: /v1/password

I threw this together pretty quickly so there's probably a lot to be desired. I'd be happy to receive any input, suggestions, ideas, etc. that you might have.

Support for FIDO2 Authentication for User Accounts

Adding FIDO2 to accounts would provide a number of benefits including:

  • Support for passwordless, second-factor and multi-factor authentication
  • Significantly improved account protection from phishing attacks
  • Streamlined user onboarding and sign in experience (if passwordless authentication is enabled)

Update references to FBI in 3DS docs

Steveice10 has completely nuked his GitHub account, seemingly completely out of the blue. The reason for this is unknown right now but I think it's safe to assume it's because of the Yuzu lawsuit and the fate of Citra.

With the loss of Steveice10, we also have now lost the official FBI repository. Our documentation for the 3DS references this now dead repository.

I'm hesitant to just start linking to random forks/mirrors, as we don't want to inadvertently recommend users install something unsafe onto their systems. Thoughts on how to move forward?

@hauntii @shutterbug2000 @DaniElectra

Password requirements

There's a common issue that I've noticed as a support helper, where people use a symbol not available on the 3ds or wii u keyboard for their username and/or password, I think you guys should implement a countermeasure that makes sure people don't input those symbols, similar to how some websites require alphanumerics only, and ban anything else.
I do hope you consider this and thank you!

  • Sarah

FAQ states the wrong information

in the "Will I need hacks to connect?" section It says that there is no 3DS instructions yet and Wii U guide is for Homebrew Launcher environments (Haxchi, etc) it should also state that you can use the SSSL exploit for Wii U to connect to Pretendo servers, but it does not work for 3DS.

Screenshot 2024-04-11 221942

Define a clear privacy policy

Apologies if this is the wrong repository
As I was planning on registering a pretendo account I noticed there was no defined privacy policy or terms of service to inform me of how my data will be used if I register. Looking at other projects (Wiimifi) a clear privacy policy is defined in order to inform users of how their data is used and their right to erasure. As pretendo becomes more popular I believe this is something that must be addressed.

"Donate" URL in nav is confusing for new people

Being redirected to the login people is confusing for people who don't know it's more about upgrading. I think there should be an explanation of tiers with a prompt to log in in order to upgrade

Password check

The Password popup for "Download account files" doesn't check if the password is correct and the textbox is invisible.
image

Wrong password result in a "Cemu Pretendo Online Files.zip" that don't work, when you put them in cemu it doesn't connect to the Pretendo network:

image
Error-Code: 102-2932

It is possible to download the files even without entering the password.

Please allow screenshots for network dump submissions + list of dump submissions

I have contacted the support channel on discord about this topic but never got an answer. I did not find the right place, so I am writing here.

I invested a lot of time to make a big amount of network traffic dumps of various Super Mario Maker functionalities (3 captures), also fixing the broken large pcap file (which took me like a whole day). It includes the SMM features that are listed as "not started" on your Website. I also made dumps of the DuckTales Remastered leaderboard functionality.

1st: It could be just me that I don't find the functionality to upload with screenshots. I hacked the first time around the upload limitation. I do not have a feeling of success however.

2nd: do you have a list of feature or game coverage? I have many Wii U games but I need to guess what to dump and which feature (and I am really short of time officially due to my study deadlines).

If this functionality is not yet available, you should really consider at least screenshots uploads (instead of just text) for network dump submissions. It certainly helps your own health, the comprehension (of what happened) and productivity. They provide exact timestamps, a description in the filename and show the screen content.

It's even more helpful since I did not find a way to turn on/off the capture at specific points in the game (it really captures everything until the point of interest which can be 10 minutes or more).

Implement well-known URL for change-password

Depends on a password-changing solution being available in the web dashboard, but once implemented, /.well-known/change-password should redirect to the account page (/whatever password changing page we have), to allow password managers to help users change passwords automatically

Website allows people to spam emails to anyone

Hello there, I have recently been SPAMMED with emails because you can send a password recovery email to anyone's email just by entering their PNID, I feel like this should 100% change
Screenshot 2024-05-20 192815

[Enhancement]: Make third-party services optional for self-hosting

Checked Existing

  • I have checked the repository for duplicate issues.

What enhancement would you like to see?

Currently, the server requires API keys for various third-party services (Stripe, GitHub, and Discord) to run. These services should be optional for contributors and self-hosters.

Any other details to share? (OPTIONAL)

No response

Adding list of error codes?

As someone who does some support in the discord server, I can comfortably say that finding what error codes mean is a huge pain, and bandwidth is a struggle to work with sometimes due to the lack of known error codes at the moment, which is why I think it would be a good idea to include a section on the website with error codes, likely sorted by the first 3 digits (022, 001, etc) similar to how the bandwidth bot is organized, this would also be beneficial for bandwidth production as some errors (022-5432 for example), take a lot to explain, and would likely be easier for people to follow if there was a link to a fix, instead of a compacted bandwidth message. That's why I think adding a section like this would be beneficial to both the developers who work on bandwidth, and the people in the server who help out in the support channel. Thank you!

Setting up Pretendo with Cemu / Guide not updated

The guide to setup Pretendo on Cemu is not updated, the guide says "Cemu requires the use of several files obtained via dumping from real hardware. You may use those files if you have a physical Wii U, they will work just fine when connecting to Pretendo. If you don't have a real Wii U navigate to your account page and select Download account files", when, you can't download your files anymore from the Pretendo Account Page, this "feature" was apparently removed due to being abused by hackers or something. To avoid misleading beginners, please update the guide to the current info.

[Bug]: Blogpost pages do not take navbar height into account when jumping to different sections with `<a>` tags

image
(I don't know how to word this propably -_-)

Anyways when on any blog and you click on a anchor that scrolls to a certain element on the page (lets say you click on one of the links in the tables of content) you scroll to that element while ignoring the nav thus hiding it in the nav

This Issue can be fixed by 1-2 CSS Codes (using scroll-margin-top with the value being the height of the nav)

Add password rules to web signup

Apple's Password Rules are used by iCloud Password and other password manager extensions to ensure autofilled passwords matched the required schema; using the information from my Wii U showing the available characters (this should be checked on 3DS just in case, though I doubt Nintendo would perform the same issue themselves...), as well as the following information from Nintendo:

The password you choose should be between 6 and 16 characters long.
Passwords must use a combination of characters from two of the following categories: letters, numbers and punctuation.
You cannot use the name you chose for your Nintendo Network ID as your password.
The same character cannot be used three or more times in a row.

The following password rules should be added to the HTML tag:

passwordrules="minlength: 6; maxlength: 16; required: lower; required: upper; required: digit; allowed: [!&quot;$%&'()*+,./:;<=>?@[\^_`{|}~]];"

As well as maxlength="16" to ensure only a PNID password of 16 characters can be input. A regex may also be a good idea for non-password-manager environments as they can also ensure only accepted characters are input. 10,000 passwords using this rule have been attached generated using Apple's website, so we can validate the rule.

generated-passwords.txt

To use the rule yourself on Apple's website, enter the following:

required: lower;
required: upper;
required: digit;
allowed: [~!@$%^&*()-+=_`:;\|"'<>.,?/{}[]]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.