Giter Club home page Giter Club logo

nepojang's Introduction

nepojang's People

Contributors

emreozcan avatar

Stargazers

 avatar

Watchers

 avatar

nepojang's Issues

Implement method to view past profile names at given time

This can already be achieved by filtering the given profile's ProfileNameEvents with an active_from greater than the given time and sorting them to find the newest one.

There should be a method (most likely inside of Profile) that does all of the above and returns the relevant ProfileNameEvent or the name. I think returning the ProfileNameEvent is more useful.

Changing skin does not check for location trust

You don't need to answer security questions to change skin currently. The official API does not trust your IP enough to allow skin changes before you answer 3 security questions. (We'll require answers for all questions on the account since we support more than 3 questions.)

Custom JSON error

API should return custom error if request JSON structure is incorrect.

Profiles for different agents cannot have the same name

Assume a profile exists for an agent "Agent1" with the name "Profile". Another profile with name "Profile" should be able to be created for a different agent such as "Agent2". This is currently impossible because all agents share a single profile table with unique constraints on name, name_lower and name_upper.

Create scripts for easy database manipulation

Scripts/utilities are needed for database manipulation. You have to do everything with Python code at the moment.

Here are a few utilities I can think of:

  • account creation
  • account listing
  • account editing
  • account deleting
  • profile creation
  • profile editing

Server authentication

Online server authentication needs to implemented for the project as a whole to be useful.

There isn't anything we need to implement before this. All the systems required are already in place.

authserver.mojang.com/authenticate response accessToken doesn't include "spr"

Response accessToken from authserver.mojang.com doesn't include the spr tag!

Expected format:

{
    "sub": "cb5086961a6449b4b799904de50b8813",
    "yggt": "e0b49660785f4008841e6bfb7944b66e",
    "spr": "346d0e64c7a24547ad1440eaf8fd3b15",
    "ssr": "Yggdrasil-Auth",
    "exp": 1578009600,
    "iat": 1577836800
}

Actually received:

{
    "sub": "cb5086961a6449b4b799904de50b8813",
    "yggt": "e0b49660785f4008841e6bfb7944b66e",
    "ssr": "Yggdrasil-Auth",
    "exp": 1578009600,
    "iat": 1577836800
}

Profile name change history

Profile name change isn't supported right now. You can change profile names with Python or SQL but it's probably not going to work like that in the future.

We'll probably have to implement a db entity NameChangeEvent. Whatever we do, the solution must support looking up the name change history, and must support finding out the name of the profile at any given time.

Security questions

The answering of security questions must be implemented in api.

Before this can be done, changing and setting the security questions must be implemented, which isn't in the official API. We will make a proprietary system for this.

This system will handle account creation and management, profile creation, profile name changing, cape and skin management and security questions.

  • Get list of security questions
  • Answer security questions
  • Trust IP address based on security questions
  • Add security questions to existing accounts

Public key cryptography

Official authlib library checks JWT responses against Yggdrasil's public key. We will have to find a workaround for this.

We will probably have to create a replacement for authlib that doesn't check signatures or checks against multiple public keys, or replace the public key they're checking against.

If we create a replacement, Nepojang will be able to used in Java applications pretty easily. But it is a lot of work and nobody will probably want to use a system specialized for one game anyways.

If we replace the public key they're checking against, since we cannot distribute the authlib.jar, the install process will be a little bit more tedious.

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.