started docs migration to docusaurus

This commit is contained in:
McModder
2025-02-05 16:49:22 +03:00
parent 64fdb01e11
commit ea1227cdf9
59 changed files with 20257 additions and 3323 deletions

View File

@@ -0,0 +1,6 @@
{
"version.label": {
"message": "Next",
"description": "The label for version current"
}
}

View File

@@ -0,0 +1,107 @@
# Ely.by API (Mojang API simulation)
This article contains information about the API compatible with the [Mojang API](http://wiki.vg/Mojang_API) functionality. Please note that this is not a full-fledged API of Ely.by, but only a set of additional requests implemented based on our `[authorization server](./minecraft-auth.md)`.
## Requests
:::note
The API has no rate limit. We just have a configured fail2ban that will ban especially annoying clients. Thats the way.
:::
This section will describe the requests and their corresponding variants for Mojang API. Base URL for requests is `https://authserver.ely.by`.
### UUID by username at a time {#uuid-by-username}
This request allows you to find out the UUID of a user by their username at a specified point in time. The time is specified via GET parameter at as a Unix timestamp.
> **GET /api/users/profiles/minecraft/\{username\}**
>
> Where `{username}` is the searched username. It can be passed in any case (in the Mojang API, only strict match).
> Note that the legacy and demo params will never be returned, as these parameters have no alternative in Ely and are specific only for Mojang services.
In case of a successful request you will receive the following response:
```json
{
"id": "ffc8fdc95824509e8a57c99b940fb996",
"name": "ErickSkrauch"
}
```
When the passed username isnt found, you will receive a response with `204` status code and an empty body.
### Username by UUID + history of changes {#username-by-uuid}
This request allows you to find out all usernames used by a user by their UUID.
> **GET /api/user/profiles/\{uuid\}/names**
>
> Where `{uuid}` is a valid UUID. UUID might be written with or without hyphens. If an invalid string is passed, [IllegalArgumentException](#illegal-argument-exception) will be returned with the message `"Invalid uuid format."`.
In case of a successful request you will receive the following response:
```json
[
{
"name": "Admin"
},
{
"name": "ErickSkrauch",
"changedToAt": 1440707723000
}
]
```
:::note
Since Ely.by doesnt store the moment of username change only 1 username will always be returned. We may add full support for remembering when a username was changed in the future.
:::
When the passed UUID isnt found, you will receive a response with `204` status code and an empty body.
### Usernames list to their UUIDs {#usernames-to-uuids}
This request allows you to query a list of users UUIDs by their usernames.
> **POST /api/profiles/minecraft**
>
> In the request body or POST parameters you need to pass a valid JSON array of the searched usernames.
>
> The array must contain no more than 100 usernames, otherwise [IllegalArgumentException](#illegal-argument-exception) will be returned with the message `"Not more than that 100 profile names per call is allowed."`. In case the passed string is an invalid JSON object, the same exception will be returned, but with the text `"Passed array of profile names is an invalid JSON string."`.
>
> Example of a request body:
> ```json
> ["ErickSkrauch", "EnoTiK", "KmotherfuckerF"]
> ```
In case of a successful request you will receive the following response:
```json
[
{
"id": "ffc8fdc95824509e8a57c99b940fb996",
"name": "ErickSkrauch"
},
{
"id": "b8407ae8218658ef96bb0cb3813acdfd",
"name": "EnoTiK"
},
{
"id": "39f42ba723de56d98867eabafc5e8e91",
"name": "KmotherfuckerF"
}
]
```
The data is returned in the same order they were requested.
If one of the passed usernames isnt found in the database, no value will be returned for it (it will be skipped). Keep this in mind when parsing the response.
### Profile info by UUID {#profile-by-uuid}
See the `[profile request for the authorization server](./minecraft-auth.md#profile-request)`.
## Possible errors {#possible-errors}
### IllegalArgumentException {#illegal-argument-exception}
This error occurs when attempting to send data to the server in an incorrect format.
An error example:
```json
{
"error": "IllegalArgumentException",
"errorMessage": "Invalid uuid format."
}
```
The `errorMessage` is not always matches Mojangs strings, but the differences are only apparent to Ely-specific errors. The original requests and the errors expected from them repeat Mojang texts.

View File

@@ -0,0 +1,59 @@
# Authlib-Injector
**authlib-injector** is a library that allows you to spoof authorization and session server addresses in the Authlib without modifying the library itself. Its designed as an javaagent.
This library significantly simplifies the installation of an alternative authorization service in the game client and server, since transformation occurs during application bootstrap process.
You can download the latest version from the [releases page on GitHub](https://github.com/yushijinhun/authlib-injector/releases/latest).
Here is the documentation of the key aspects of installing and using the library. For more information, see the [original documentation in Chinese](https://github.com/yushijinhun/authlib-injector/wiki).
## Installing in a game client {#client}
:::warning
This section describes how to install the **authlib-injector** into the game. The game launcher still needs to implement the authorization flow itself in order to pass the `accessToken` to the game.
:::
To install the library, you need to specify it as a javaagent for the game. You can do this by prepending the line `-javaagent:/path/to/file/authlib-injector.jar=ely.by` as a game launching param. As the result, the launch command should look like this:
```bash
java -javaagent:/path/to/authlib-injector.jar=ely.by -jar minecraft.jar
```
If you run the game via launcher, then in “settings” you need to find a field for specifying additional JVM arguments, where you need to insert the line above.
![Minecraft Launcher settings with -javaagent... argument in the JVM Arguments field](/img/launcher-jvm-options.png)
## Installing on a server {#server}
Just as in the case with the game client, the library must be specified as javaagent. [Download the library](https://github.com/yushijinhun/authlib-injector/releases/latest) and put in the servers directory. Then add the javaagent call to the server launch command:
```bash
# Before
java -jar minecraft_server.jar
# After
java -javaagent:authlib-injector.jar=ely.by -jar minecraft_server.jar
```
During server startup you should see a message about the activation of the authlib-injector:
![Authlib-injector log strings at the server startup](/img/server-startup-messages.png)
### BungeeCord {#bungeecord}
The authlib-injector must be installed directly on the BungeeCord itself, as well as **on all backends** behind it. Note the configuration of the online-mode parameter:
* The BungeeCords configuration (`config.yml`) should contain `online_mode=true`.
* The servers behind the proxy must contain in their configuration (`server.properties`) the value `online-mode=false`.
Using such configuration authorization will work for all logging in players and the internal servers will correctly display player skins.
### LaunchHelper {#launchhelper}
Not all game hostings allow direct modifications of launch arguments. To get around this limitation, you can use a special server that runs the game server by mixing authlib-injector into it. To install, follow these instructions:
1. Download the corresponding LaunchHelper for your operating system from the [releases page](https://github.com/Codex-in-somnio/LaunchHelper/releases/latest).
1. Upload this file and the `authlib-injector.jar` file to the server folder on your hosting site.
1. Also create a `launchhelper.properties` file and put the following contents into it:
```properties
javaAgentJarPath=authlib-injector.jar
javaAgentOptions=ely.by
execJarPath=minecraft_server.jar
```
Where `javaAgentJarPath` contains the path to the `authlib-injector.jar` file and `execJarPath` contains the name of the server file.
1. In the hosting control panel, specify the `LaunchHelper.jar` as the server file.
If you cant change the executable file, you should rename the `LaunchHelper.jar` file to match your hosting requirements (usually, `server.jar`). In this case, you should have the following file structure:
* `server.jar` - the LaunchHelper file.
* `minecraft_server.jar` - your server core.
* `authlib-injector.jar` - the authlib-injector file.
* `launchhelper.properties` - the configuration file for the LaunchHelper.

View File

@@ -0,0 +1,8 @@
---
slug: /
---
# Welcome to the Ely.by documentation! {#welcome}
In this documentation you will find information about the public services of the Ely.by project, using which youll be able to integrate your projects with the Ely.by services.
You are free to improve this documentation in the documentations repository.