Giter Club home page Giter Club logo

lodestone_core's People

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

Watchers

 avatar  avatar

lodestone_core's Issues

Add paper support

Description

Add paper support for Minecraft

Steps to reproduce (optional)

Setup CORS for Axum

Intention:

Rocket has problems with CORS policy which need to be explicitly addressed.

Look into if Axum needs to be set up to avoid such issue, if so fix it.

Why is it necessary:

CORS broke the Rocket app before.

Add restart

Description

Add restart functionality to server instances

Steps to reproduce (optional)

Incoporate testing into the CI

Intention:

CI does not run any test right now. CI should run cargo test before running cargo run. CI should fail if cargo test fails.

Why is it necessary:

Tests should be part of the CI process for more rigorous verification.

New global setting "host name"

Intention:

  • Add a new global setting "hostname"
  • Have it default to localhost for now? (maybe we can default to the user's public ip once we got that figured out)
  • Add an endpoint for getting and setting this value

Why is it necessary:

Example of issue:
A user setup a new Lodestone Core and connects to it through localhost:16662, then creates a Minecraft server.
When they try to copy the server's IP to share with their friend, they get localhost:25565.

Example of issue:
A user sets up a custom domain myserver.com pointing to their server at 123.123.123.123 running Lodestone Core and Minecraft. But the dashboard keeps displaying 123.123.123.123

Implement unzip

Intention:

Add cross-platform unzip functionalities that handle a wide range of archive formats (.tar.gz, zip, rar),

Why is it necessary:

Loadstone will need to deal with compressed archives a lot.

Improve user login errors

Description

Currently, when a user tries to login.
If the username is incorrect, the server replies with a 404 error.
If the password is incorrect, the server replies "Unauthorized", "Credential mismatch"

The server should not use 404 for "user not found" in this case, and reply with the exact same response in both cases

Tauri client does not handle Ctrl C through command line

Description

If Lodestone is ran through SSH on a linux machine that has a DE running, Tauri window will pop up invisible to the SSH user, and ctrl-c the CLI will only shutdown Lodestone Core and not the Tauri window, leaving it in a invalid state

Steps to reproduce (optional)

  1. Launch Lodestone through SSH
  2. Ctrl C the CLI
  3. Lodestone does not exit, only the core is shut down but the tauri window remains op on the DE

Implements get_list_of_versions for Minecraft

Intention:

Implement the function get_list_of_versions under implementations/minecraft/util.rs to return a list of valid versions for a particular flavour for Minecraft.

Why is it necessary:

Frontend needs to know what versions are available for each of the flavours.

Strongly type the parameters of handlers

Intention:

All Axum handlers return a json value which is dynamically typed. Change all the return type to be strongly typed.

Why is it necessary:

Dynamic typing produce less readable code and is more error prone.

Add clippy to CI

Intention:

More rigorous CI

Why is it necessary:

When a linter writes better code than u

Add a "get client info" route

Intention:

Add a route for frontend to query preliminary info about the client

Why is it necessary:

So frontend can check hardware specs, version numbers, etc

Improve headless installation experience

  • Display the current port
  • Instruct the user to open https://lodestone.cc and enter info
  • Instruct the user to open port
  • Display its own ip address/hostname/public ip?
  • Stop displaying the user's password on setup

Refactor handlers to axum

Intention:

Refactor all old handlers in src/handlers/system.rs and src/handlers/jar.rs to axum routes

Why is it necessary:

Part of the refactor to axum process

Refactor to Axum

Intention:

Switch from Rocket to Axum during the refactoring.

Why is it necessary:

Not necessary as Rocket works fine.

Axum has native WS support while Rocket doesn't
Axum is more actively developed while Rocket often stalls
Axum is faster than rocket
Axum is a more minimal framework which may work in our favor
Axum potentially provides more features that could help with permission/auth

Support for https and wss

Intention

We should support https and wss so that those who want to set it up can.

Ideally we should also have wiki pages on this topic, and guide on how to set it up with certbot or something.
This would also serve as the basis for automating this process in the future.

Edit: Also ideally, we can have both https and http at the same time, since tauri currently defaults to http

Random seg fault when canceling a tokio handle running a JS event loop

Intention:

Lodestone should not seg fault under any circumstances.

Why is it necessary:

Seg fault is bad and is indicative of memory access violation/corruption.

While I can't consistently reproduce this issue, the rough steps seem to be:

  1. spawn multiple JS runtime within one macro executor, let $n$ be the number of js runtimes
  2. cancel some runtime $a$ where $a < n - 1$, then cancel runtime $n-1$ and $n$
  3. Seg faults occur in debug mode (not tested in release)

Investigate Axum over Rocket

Intention:

Investigate the potential of switching from Rocket to Axum during the refactoring.

Why is it necessary:

Not necessary as Rocket works fine.

Axum has native WS support while Rocket doesn't
Axum is more actively developed while Rocket often stalls
Axum is faster than rocket
Axum potentially provides more feature that could help with permission/auth

Figure out how Windows installer will work

Intention:

Eventually we will need to add support for installing Lodestone on Windows, an installer tailored to the windows experience is preferred.

Why is it necessary:

While the installer can be a script (python), a Windows installer provides the installation experience expected by a Windows user.

Figure out how auth will work with Axum

Intention:

Research into Axum to see how to do auth & user permissions.

Assume the user database is a kv store with the ability to get specific permissions of the user.

A small demo of the process would be nice.

Why is it necessary:

Lodestone needs auth and permissions.

Update to Rust 1.62.0

Intention:

Update to Rust version 1.62.0

Why is it necessary:

1.62.0 provides major improvements on mutexes

Add integration testings on the HTTP layer

Intention:

Testing on Lodestone right consists of limited unit testing. We should test on the HTTP level with real AppState and HTTP requests

Why is it necessary:

HTTP is the layer exposed to the end user, and may contain bugs not found by unit testing the sub-systems.

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.