new awesome build
This commit is contained in:
77
DOCS/Profiler_Management/API_Reference.md
Normal file
77
DOCS/Profiler_Management/API_Reference.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# OpenVPN Profiler API Reference
|
||||
|
||||
This module (`APP_PROFILER`) is built with **FastAPI** and provides management capabilities.
|
||||
|
||||
**Base URL**: `http://<your-server>:8000/api`
|
||||
|
||||
## Authentication
|
||||
All endpoints (except initial setup) require a Bearer Token.
|
||||
**Header**: `Authorization: Bearer <JWT_TOKEN>`
|
||||
|
||||
*Note: The token is shared with the Core Monitoring API.*
|
||||
|
||||
---
|
||||
|
||||
## 1. User Profiles
|
||||
|
||||
Manage OpenVPN Client profiles (`.ovpn` configs and certificates).
|
||||
|
||||
### `GET /profiles`
|
||||
List all user profiles.
|
||||
- **Response**: Array of profile objects (id, username, status, expiration_date, etc.).
|
||||
|
||||
### `POST /profiles`
|
||||
Create a new user profile.
|
||||
- **Body**: `{"username": "jdoe"}`
|
||||
- **Action**: Generates keys, requests certificate, builds `.ovpn` file.
|
||||
|
||||
### `DELETE /profiles/{id}`
|
||||
Revoke a user profile.
|
||||
- **Action**: Revokes certificate in CRL and marks profile as revoked in DB.
|
||||
|
||||
### `GET /profiles/{id}/download`
|
||||
Download the `.ovpn` configuration file for a user.
|
||||
- **Response**: File stream (application/x-openvpn-profile).
|
||||
|
||||
---
|
||||
|
||||
## 2. System Configuration
|
||||
|
||||
Manage global settings for the server and PKI.
|
||||
|
||||
### `GET /config`
|
||||
Get current configuration.
|
||||
- **Query Params**: `section` (optional: 'server' or 'pki')
|
||||
- **Response**: `{ "server": {...}, "pki": {...} }`
|
||||
|
||||
### `PUT /config/server`
|
||||
Update OpenVPN Server settings (e.g., protocol, port, DNS).
|
||||
- **Body**: JSON object matching `SystemSettings` schema.
|
||||
|
||||
### `PUT /config/pki`
|
||||
Update PKI settings (e.g., Key Size, Certificate Expiry).
|
||||
- **Body**: JSON object matching `PKISetting` schema.
|
||||
|
||||
### `POST /system/init`
|
||||
Initialize the PKI infrastructure (InitCA, GenDH, BuildServerCert).
|
||||
- **Note**: Only runs if PKI is empty.
|
||||
|
||||
### `DELETE /system/pki`
|
||||
**DANGER**: Completely wipes the PKI directory.
|
||||
|
||||
---
|
||||
|
||||
## 3. Server Management
|
||||
|
||||
### `POST /server/configure`
|
||||
Generate the `server.conf` file based on current database settings.
|
||||
- **Response**: `{"message": "Server configuration generated", "path": "/etc/openvpn/server.conf"}`
|
||||
|
||||
### `POST /server/process/{action}`
|
||||
Control the OpenVPN system service.
|
||||
- **Path Param**: `action` (start, stop, restart)
|
||||
- **Response**: Status of the command execution.
|
||||
|
||||
### `GET /server/process/stats`
|
||||
Get telemetry for the OpenVPN process.
|
||||
- **Response**: `{ "status": "running", "cpu_percent": 1.2, "memory_mb": 45.0 }`
|
||||
49
DOCS/Profiler_Management/Overview.md
Normal file
49
DOCS/Profiler_Management/Overview.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# OpenVPN Profiler API
|
||||
|
||||
A modern, Python-based REST API for managing OpenVPN servers, Public Key Infrastructure (PKI), and user profiles. This component is located in `APP_PROFILER/`.
|
||||
|
||||
## Features
|
||||
|
||||
* **REST API**: Built with FastAPI for robust performance and automatic documentation.
|
||||
* **Database Storage**: Configurations and user profiles are stored in SQLite (extensible to other DBs via SQLAlchemy).
|
||||
* **PKI Management**: Integrated management of EasyRSA for CA, Server, and Client certificate generation.
|
||||
* **Dynamic Configuration**: Templated generation of `server.conf` and client `.ovpn` files using Jinja2.
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Prerequisites
|
||||
|
||||
* Python 3.10 or higher
|
||||
* OpenVPN (installed and available in PATH)
|
||||
* Easy-RSA 3 (must be present in the `easy-rsa` directory in the project root)
|
||||
|
||||
### Usage
|
||||
|
||||
Once the server is running (see [Deployment Guide](../General/Deployment.md)), the full interactive API documentation is available at:
|
||||
* **Swagger UI**: `http://<your-server>:8000/docs`
|
||||
* **ReDoc**: `http://<your-server>:8000/redoc`
|
||||
|
||||
### Common Operations
|
||||
|
||||
**Create a new User Profile:**
|
||||
```bash
|
||||
curl -X POST "http://localhost:8000/profiles" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"username": "jdoe"}'
|
||||
```
|
||||
|
||||
**Download User Config:**
|
||||
```bash
|
||||
# Get the ID from the profile creation response or list
|
||||
curl -O -J http://localhost:8000/profiles/1/download
|
||||
```
|
||||
|
||||
**Revoke User:**
|
||||
```bash
|
||||
curl -X DELETE http://localhost:8000/profiles/1
|
||||
```
|
||||
|
||||
**Get System Configuration:**
|
||||
```bash
|
||||
curl http://localhost:8000/config
|
||||
```
|
||||
Reference in New Issue
Block a user