π‘ Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ API (Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²)
ΠΡΠΎΡ API ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΆΡΡΠ½Π°Π»ΠΎΠ², ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ (VOD) ΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ½ΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
---
## Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²
System API ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ:
```
src/public/Controllers/Api/AdminApiController.php
```
HTTP entry-point: `/api.php` β ΡΠΎΡΡΠΈΡΡΡ nginx Π½Π° `public/index.php` Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ `XC_API=internal`.
## ΠΠ±Π·ΠΎΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ API
**ΠΠ°Π·ΠΎΠ²ΡΠΉ URI**: `http://:/api.php`
**ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ**: `password` ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ `live_streaming_pass`
**ΠΡΠΈΠΌΠ΅Ρ**: `http://:/api.php?password=&action=`
---
## ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ API
### 1. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ VOD
#### **GET** `/api.php?action=vod`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** ΠΠ°ΠΏΡΡΠΊ ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ (VOD).
**ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:**
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|------------|----------|----------|-------------|
|stream_ids |ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» |yes |Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΏΠΎΡΠΎΠΊΠΎΠ². |
|function |string |yes |ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ (`start` ΠΈΠ»ΠΈ `stop`)|
---
### 2. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΉ
#### **GET** `/api.php?action=stream`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** ΠΠ°ΠΏΡΡΠΊ ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΡΠΌΡΡ
ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΉ.
**ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:**
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|------------|----------|----------|-------------|
|stream_ids |ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» |yes |Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΏΠΎΡΠΎΠΊΠΎΠ². |
|function |string |yes |ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ (`start` ΠΈΠ»ΠΈ `stop`)|
---
### 3. Π’Π΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ
#### **GET** `/api.php?action=stats`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** ΠΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ.
**ΠΡΠ²Π΅Ρ:**
```json
{
"cpu": 8.32,
"cpu_cores": 56,
"cpu_avg": 8.86,
"cpu_name": "Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz",
...,
}
```
---
### 4. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΡΠΎΡΠ΅ΡΡΠ°
#### **GET** `/api.php?action=pidsAreRunning`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π·Π°ΠΏΡΡΠ΅Π½Ρ Π»ΠΈ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² (PID).
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|------------|----------|----------|-------------|
|pids |ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» | yes | Π‘ΠΏΠΈΡΠΎΠΊ PID Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. |
|program |string |yes |ΠΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. |
---
### 5. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°
#### **GET** `/api.php?action=getFile`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** ΠΠ°Π³ΡΡΠΆΠ°Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ».
**ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:**
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|------------|----------|----------|-------------|
|filename |string |yes |ΠΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ.|
**ΠΡΠ²Π΅Ρ:**
- Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π°.
---
### 6. Π‘ΠΏΠΈΡΠΎΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°
#### **GET** `/api.php?action=viewDir`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** ΠΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ².
**ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:**
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|------------|----------|----------|-------------|
|dir |string |yes |ΠΡΡΡ ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ.|
**ΠΡΠ²Π΅Ρ:**
```html
```
---
### 7. ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
#### **GET** `/api.php?action=redirect_connection`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΏΠΎΡΠΎΠΊΠ°.
**ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:**
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|------------|----------|----------|-------------|
|activity_id |ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ |Π΄Π° |ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. |
|stream_id |ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ |Π΄Π° |ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΡΠΎΠΊΠ°. |
---
### 8. ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΠ³Π½Π°Π»
#### **GET** `/api.php?action=signal_send`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠ³Π½Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
**ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:**
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|------------|----------|----------|-------------|
|message |ΡΡΡΠΎΠΊΠ° |Π΄Π° |ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΡΠΌΠ΅Π½Ρ. |
|activity_id |ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ |Π΄Π° |ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.|
---
### 9. ΠΡΠΈΡΡΠΈΡΡ ΠΏΠ°ΠΏΠΊΡ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ
#### **GET** `/api.php?action=free_temp`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** Π£Π΄Π°Π»ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
---
### 10. ΠΡΠΈΡΡΠΈΡΡ ΠΏΠ°ΠΏΠΊΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΉ
#### **GET** `/api.php?action=free_streams`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** ΠΡΠΈΡΠ°Π΅Ρ ΠΏΠ°ΠΏΠΊΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
---
### 11. ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ
#### **GET** `/api.php?action=get_free_space`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅.
---
### 12. ΠΠΎΠ»ΡΡΠΈΡΡ PID
#### **GET** `/api.php?action=get_pids`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
---
### 13. ΠΠ°Π²Π΅ΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ ΠΏΠΎ PID
#### **GET** `/api.php?action=kill_pid`
**ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:** Π£Π±ΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎ PID.
---
## ΠΠΎΠ΄Ρ ΠΎΡΠΈΠ±ΠΎΠΊ
| ΠΠΎΠ΄ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|----------------------|-------------|
| INVALID_API_PASSWORD | ΠΠ°ΡΠΎΠ»Ρ API Π½Π΅Π²Π΅ΡΠ΅Π½ |
| API_IP_NOT_ALLOWED | IP-Π°Π΄ΡΠ΅Ρ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ |
| INVALID_REQUEST | ΠΠ΅Π²Π΅ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ° |
---
## ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
- ΠΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ API.
- ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°.