Описание
# WebPanel
A Minecraft 1.21.4 PaperMC/Spigot Plugin that creates a WebPanel.
This plugin allows you to modify your server via the web, including adding, removing, and downloading files, as well as managing the console.
## Early Access
This plugin is still in early access and may contain bugs or insecurities.
Features may also be subject to change.
## Features
These are the current features of this WebPanel plugin.
### WebPanel
- Manage the server console
- Stop the server
- Upload files to the server
- Download files from the server
- Delete files or directories
- Create new folders
### Commands
There are no commands yet.
### Events
There are no events yet.
### Planned
To see what features are currently planned please check out the [WebPanel GitHub project board](https://github.com/users/Beauver/projects/3)
## Installation
1. Download the plugin jar file.
2. Place the jar file in the `plugins` folder of your PaperMC/Spigot server.
3. Restart the server to load the plugin.
## Usage
1. Add your IP address to the `allowedIPs` list in the plugins `config.yml` file.
2. Restart the server to apply the changes. (Later there will be a command)
3. Access the panel via `http://:/` in your browser.
## Endpoints
These endpoints are currently used by the panel. They may not yet be final and may be subject to change.
| Endpoint | URL | Method | Headers | Parameters | Response |
|--------------------|---------------------|--------|--------------------------------------------------------------------------------------|----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Get Files | `/getFiles` | GET | `Content-Type: application/x-www-form-urlencoded` | `path` | `200 OK`: File list retrieved successfully`400 Bad Request`: Missing path`401 Unauthorized`: Missing or invalid API Key`403 Forbidden`: Forbidden`500 Internal Server Error`: Failed to retrieve file list |
| Upload File | `/uploadFile` | POST | `Authorization: Bearer `, `Content-Type: multipart/form-data` | `path`, `folderName` | `200 OK`: File uploaded successfully`400 Bad Request`: File not found in request body`401 Unauthorized`: Missing or invalid API Key`403 Forbidden`: Forbidden`500 Internal Server Error`: Failed to save file |
| Delete File | `/deleteFile` | POST | `Authorization: Bearer `, `Content-Type: application/x-www-form-urlencoded` | `path` | `200 OK`: File or directory deleted successfully`400 Bad Request`: Missing file path`401 Unauthorized`: Missing or invalid API Key`403 Forbidden`: Forbidden`404 Not Found`: File not found`500 Internal Server Error`: Failed to delete file or directory |
| Create Folder | `/createFolder` | POST | `Authorization: Bearer `, `Content-Type: application/x-www-form-urlencoded` | `path`, `folderName` | `200 OK`: Folder created successfully`400 Bad Request`: Missing path or folder name`401 Unauthorized`: Missing or invalid API Key`403 Forbidden`: Forbidden`500 Internal Server Error`: Failed to create folder |
| Download File | `/downloadFile` | GET | `"Authorization": Bearer ` | `path` | `200 OK`: File downloaded successfully`400 Bad Request`: Missing file path`401 Unauthorized`: Missing or invalid API Key`403 Forbidden`: Forbidden`404 Not Found`: File not found`500 Internal Server Error`: Failed to download file |
| Send to Console | `/sendToConsole` | POST | `Authorization: Bearer `, `Content-Type: application/x-www-form-urlencoded` | `command` | `200 OK`: Command sent successfully`400 Bad Request`: Missing command`401 Unauthorized`: Missing or invalid API Key`403 Forbidden`: Forbidden`500 Internal Server Error`: Failed to send command |
| Get Console Output | `/getConsoleOutput` | GET | | | `200 OK`: Console output retrieved successfully`500 Internal Server Error`: Failed to retrieve console output |
| Get Players | `/getPlayers` | GET | | | `200 OK`: Player list retrieved successfully`500 Internal Server Error`: Failed to retrieve player list |
| Stop Server | `/stopServer` | POST | `Authorization: Bearer ` | | `200 OK`: Server stopped successfully`401 Unauthorized`: Missing or invalid API Key`403 Forbidden`: Forbidden`500 Internal Server Error`: Failed to stop server |
| Get API Key | `/getApiKey` | GET | `Authorization: IP Based (Config)` | | `200 OK`: API Key retrieved successfully`401 Unauthorized`: Missing or invalid API Key`403 Forbidden`: Forbidden`500 Internal Server Error`: Failed to retrieve API Key |
## Security
**Security may be subject to change. This is due the user inconvenience of IP based security.**
- API Key authentication is used to secure the endpoints. For now only permitted IPs in the plugins config.yml can access the `/getApiKey` endpoint.
- IP address validation is performed to ensure requests are from authorized sources.
## License
This project currently has no license yet.
For now all rights are reserved.
You may however suggest changes via PRs