78 lines
2.2 KiB
Markdown
78 lines
2.2 KiB
Markdown
# 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 }`
|