Updated README and LICENSE. Added contribution guide and CoC

This commit is contained in:
RedDuckss 2018-09-27 15:41:49 -04:00
parent cebfce21b3
commit ca758f7116
4 changed files with 545 additions and 678 deletions

40
CODE_OF_CONDUCT.md Normal file
View file

@ -0,0 +1,40 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version]
[homepage]: https://contributor-covenant.org
[version]: https://contributor-covenant.org/version/1/4/

113
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,113 @@
# Contributing Guide
The following is a guide designed to help new developers get a feel for how best to contribute to Pretendo. It is important that all who want to help contribute read these guidelines.
#### Table Of Contents
[Code of Conduct](#code-of-conduct)
[Prerequisites](#prerequisites)
* [Different areas](#different-areas)
* [Prerequisites for PRUDP](#prerequisites-for-prudp)
* [Prerequisites for NEX](#prerequisites-for-nex)
* [Prerequisites for Services](#prerequisites-for-services)
* [Prerequisites for PUS](#prerequisites-for-pus)
* [Prerequisites for Misc](#prerequisites-for-misc)
[Contributing](#contributing)
* [Getting started](#getting-started)
* [Contributing to PRUDP, NEX, or services](#contributing-to-prudp-nex-or-services)
## Code of Conduct
This project and everyone participating in it is governed by the [Pretendo Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code.
## Prerequisites
### Different areas
Before you can contribute it is important to know what area you would like to contribute to. Due to the scale and complexity of the network, the Pretendo Network project is split into several different areas of development which cover specific sections of the network. Each of these sections require slightly different prerequisites and background knowledge.
### Prerequisites for PRUDP
PRUDP(S) is the protocol layer ontop of all network requests made by the Nintendo WiiU/3DS family of consoles. It is a simple protocol spec sitting on top of UDP. It aims to make UDP reliable and secure, and was originally developed by [Quazal](http://www.quazal.com/index.html), with a custom version made for Nintendo.
For more information about PRUDP, see [this Wiki](https://github.com/Kinnay/NintendoClients/wiki/PRUDP-Protocol)
### Prerequisites for NEX
NEX is the server middleware/framework used to handle the PRUDP connections. It handles the authentication, done through Kerberos, and connections to the secure server. In Pretendo both the PRUDP and NEX implementations are written in [Golang](http://golang.org). All non-(PR)UDP services are written in [NodeJS](https://nodejs.org).
For more information about NEX, see [this Wiki](https://github.com/Kinnay/NintendoClients/wiki/Game-Server-Overview)
### Prerequisites for Services
Services are servers which implement NEX in a functional way. These can be game servers such as the Super Mario Maker server or Mario Kart 8 match making server, or service servers such as the Friends service, ect.
### Prerequisites for PUS
PUS stands for Pretendo Update Server and, as the name suggests, is the Pretendo implementation of NUS (Nintendo Update Server). This server handles things such as FW updates, serving titles to the eShop, ect. It utilizes SOAP rather than REST. NUS has not been properly reverse engineered, we are simply mimicing what we have seen the official servers send during network dumps.
### Prerequisites for Misc
There are several other, smaller, areas of development. These range from the account server, to the frontend website, the Discord bot, the OTP/SEEPROM/account.dat generation (for [Cemu](http://cemu.info/) users), ect. These serve various purposes and use various languages/technologies.
## Contributing
### Getting started
Before you can contribute you need a few things first. First of all, you need to decided which area you are contributing to. If you are contributing to the development of NEX/PRUDP, or any services using them, you must first install [Golang](http://golang.org) and read the [Prerequisites for PRUDP](#prerequisites-for-prudp) and/or [Prerequisites for NEX](#prerequisites-for-nex) sections.
If you wish to contribute to PUS, or any other parts of the network, you must install [NodeJS](https://nodejs.org) and then read the correct prerequisites section.
### Contributing to PRUDP, NEX, or services
To contribute to PRUDP, NEX, or services decide which console you will be using to test (WiiU or 3DS). Alternatively, if you lack a console you can use [Cemu](http://cemu.info/) to emulate a WiiU, which supports network connections, as well as using this [Python library](https://github.com/Kinnay/NintendoClients) to build custom clients to test with.
If using a physical console or Cemu, you must download and run a local copy of the [account server](https://github.com/PretendoNetwork/account) to direct the client to the local NEX server.
If using the NintendoClients Python library you simply have to point the client to your local NEX server.
If using a physical console, install [Fiddler Proxy](https://www.telerik.com/fiddler) and then follow this setup guide to setup a WiiU (we currently do not have a setup guide for the 3DS):
1. In Fiddler, open `Tools > Options`
2. In the `HTTPS` tab turn on HTTPS Connects
3. Enable HTTPS decrypting
4. Ignore server certificate errors
5. In the `Connections` tab tick `Allow remote computers to connect`
6. Turn off `Act as system proxy on startup`
7. Back in the `HTTPS` tab click `Actions > Export Root Certificate to Desktop`
8. Rename `FiddlerRoot.cer` to `CACERT_NINTENDO_CA_G3.der` wherever you exported it to. Make sure the file extension`.der` NOT `.cer`. If its the wrong format you risk a brick
9. Install FTPiiU_Everywhere (not regular FTPiiU)
10. Launch in to Mocha (redNAND or sysNAND, doesn't matter. Do which ever you want)
11. Launch the Homebrew Launcher and startup FTPiiU_Everywhere
12. Connect to the FTP server on your computer using any FTP client (FileZilla/WinSCP on Windows or Finder on MacOS for example)
13. Navigate to `/storage_mlc/sys/title/0005001b/10054000/content`
14. Dump the `ccerts` folder to your PC (Will be used later. The file you will be using is common to ALL WiiU consoles, so you can download this file online if you want)
15. Enter `scerts` and replace the `CACERT_NINTENDO_CA_G3.der` file there with the `CACERT_NINTENDO_CA_G3.der` file you just made earlier from the `FiddlerRoot.cer` (make sure to backup the original. replacing this cert makes you unable to connect to the official servers without the proxy, you must change it back if you want to disable the proxy and still go online)
16. Close the FTP connection on your computer and exit FTPiiU_Everywhere (press Home button)
17. Reboot your console (Do not force-reboot (holding power button for 4 seconds), reboot normally (only hold for 2 seconds), to prevent cache issues)
18. Go to the connection settings for your WiFi connection on your WiiU and turn on proxy connections
19. Set the proxy server to your PC's IP, and the port to `8888` (unless you changed the Fiddler port)
20. On your PC go to where you dumped `ccerts` and copy `WIIU_COMMON_1_CERT.der` (again, this file is common to all consoles. You can find it online if you want)
21. Paste the cert in `%USERPROFILE%\My Documents\Fiddler2\` and rename it to `ClientCertificate.cer`
22. Open the `FiddlerScript` tab and find the `OnBeforeRequest` method
23. At the end of the method, add:
```
// Change "account.nintendo.net" to whatever official Nintendo server you are replacing
if (oSession.HostnameIs("account.nintendo.net"))
{
if (oSession.HTTPMethodIs("CONNECT"))
{
oSession["x-replywithtunnel"] = "PretendoTunnel";
return;
}
oSession.fullUrl = "address.of.account.server" + oSession.PathAndQuery;
}
```
24. Restart Fiddler to save changes
If using Cemu, follow the [Cemu online play guide](http://compat.cemu.info/wiki/Tutorial:Online_Play) to get Cemu online. Then modify the above steps to work with Cemu (untested).
## Attribution
This contributing guideline is adapted from the [Atom contributing guideline](https://github.com/atom/atom/blob/master/CONTRIBUTING.md).

1034
LICENSE

File diff suppressed because it is too large Load diff

View file

@ -1,33 +1,35 @@
# Pretendo
<p align="left">
<a href="https://discord.gg/rxekqVJ" target="_blank">
<img src="https://discordapp.com/api/guilds/408718485913468928/widget.png?style=banner3">
<p align="center">
<a href="https://discord.me/pretendo" target="_blank">
<img src="https://discordapp.com/api/guilds/408718485913468928/widget.png?style=banner2">
</a>
</p>
[![forthebadge](http://forthebadge.com/images/badges/built-with-love.svg)](http://forthebadge.com)
# Pretendo
## A close-as-possible server emulation project for the 3DS and WiiU
Pretendo is an open source Nintendo Network replacement that aims to build custom servers for the WiiU and 3DS family of consoles.
## For detailed information, see the [wiki](https://github.com/PretendoNetwork/Pretendo/wiki)
## Contributing
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for contributing to the project.
## Goals/Roadmap
Pretendo is a large project with many smaller sections, each with their own goals. To find the goals and roadmap for a specific section of the network, check it's repo.
# Service repositories:
- NEX framework [https://github.com/PretendoNetwork/nex-go](https://github.com/PretendoNetwork/nex-go)
- account server [https://github.com/PretendoNetwork/account](https://github.com/PretendoNetwork/account)
- Friends service (WIP) [https://github.com/PretendoNetwork/Friends](https://github.com/PretendoNetwork/Friends)
- Super Mario Maker (WIP) [https://github.com/PretendoNetwork/SuperMarioMaker](https://github.com/PretendoNetwork/SuperMarioMaker)
- eShop (PoC) [https://github.com/PretendoNetwork/eShop](https://github.com/PretendoNetwork/eShop)
# Non-service repositories:
- Official Discord bot [https://github.com/PretendoNetwork/Yamamura](https://github.com/PretendoNetwork/Yamamura)
- Official proxy [https://github.com/PretendoNetwork/maryo](https://github.com/PretendoNetwork/maryo)
# What is this useful for?
1. Preservation - The WiiU and the 3DS, just like every other console, have an EOL (End of Life.) There will be a point where Nintendo shuts the entirety of Nintendo Network that the WiiU and 3DS depend on for many features. One of the goals with this project is to keep Nintendo Network (NN) alive as Pretendo Network (PN), and to prepare for the EOL.
2. Customization - With a custom server you have full control. Nintendo currently enforces certain things which may not be desirable to all (for example, requiring console-specific information to login and use services, as official accounts are tied to consoles). This could also become useful for tools like Cemu and Citra, as the Cemu currently supports online play but requires dumps of console-specific files to get online (as, again, official accounts are tied to consoles) and Citra wont connect to official NN servers out of fear of a DMCA. Custom servers could remove these barriers and allow anyone to go online with Cemu and Citra.
## License
# Cool! How far along is it?
Not far at all. Currently only NNID (PNID (Pretendo Network ID)) accounts work, and no games are currently supported
This project is licensed under the Mozilla Public License 2.0 License - see the [LICENSE](LICENSE) file for details
# Supported games:
- None yet
## Acknowledgments
* PRUDP/NEX was originally designed and developed by [Quazal](http://www.quazal.com/index.html)
* Huge thanks to [Kinnay](https://github.com/Kinnay) as without his reverse engineering work and documentation of PRUDP and NEX, I doubt Pretendo would be anywhere today.