118 lines
2.5 KiB
Markdown
118 lines
2.5 KiB
Markdown
# VPN Links HTTP Server
|
||
|
||
Простой HTTP-сервер на Dart для хранения и выдачи VPN-ссылок через SQLite.
|
||
|
||
## Что делает сервер
|
||
|
||
- Поднимает HTTP-сервер на `0.0.0.0:8080`.
|
||
- Создает SQLite-базу `data/vpn_links.db` при первом запуске.
|
||
- Создает таблицу `connections`, если ее нет.
|
||
- Добавляет стартовые ссылки (seed) один раз через `INSERT OR IGNORE`.
|
||
|
||
Формат ответа списка ссылок:
|
||
|
||
```json
|
||
{
|
||
"links": [
|
||
"vless://...",
|
||
"vmess://...",
|
||
"trojan://..."
|
||
]
|
||
}
|
||
```
|
||
|
||
## Установка и запуск
|
||
|
||
1. Установить зависимости:
|
||
|
||
```bash
|
||
dart pub get
|
||
```
|
||
|
||
2. Запустить сервер:
|
||
|
||
```bash
|
||
dart run bin/vpn_server.dart
|
||
```
|
||
|
||
После запуска сервер доступен по адресу `http://127.0.0.1:8080`.
|
||
|
||
## API
|
||
|
||
### `GET /connections`
|
||
|
||
Возвращает все ссылки из базы.
|
||
|
||
Пример:
|
||
|
||
```bash
|
||
curl http://127.0.0.1:8080/connections
|
||
```
|
||
|
||
Успешный ответ: `200 OK`
|
||
|
||
```json
|
||
{
|
||
"links": [
|
||
"vless://example",
|
||
"trojan://example"
|
||
]
|
||
}
|
||
```
|
||
|
||
### `POST /connections`
|
||
|
||
Добавляет новую ссылку.
|
||
|
||
Тело запроса:
|
||
|
||
```json
|
||
{
|
||
"url": "trojan://example-link"
|
||
}
|
||
```
|
||
|
||
Пример:
|
||
|
||
```bash
|
||
curl -X POST http://127.0.0.1:8080/connections \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"url":"trojan://example-link"}'
|
||
```
|
||
|
||
Ответы:
|
||
- `201 Created` — ссылка добавлена.
|
||
- `409 Conflict` — такая ссылка уже есть.
|
||
- `400 Bad Request` — неверный JSON или отсутствует `url`.
|
||
|
||
### `DELETE /connections`
|
||
|
||
Удаляет ссылку по точному значению `url`.
|
||
|
||
Тело запроса:
|
||
|
||
```json
|
||
{
|
||
"url": "trojan://example-link"
|
||
}
|
||
```
|
||
|
||
Пример:
|
||
|
||
```bash
|
||
curl -X DELETE http://127.0.0.1:8080/connections \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"url":"trojan://example-link"}'
|
||
```
|
||
|
||
Ответы:
|
||
- `200 OK` — ссылка удалена.
|
||
- `404 Not Found` — ссылка не найдена.
|
||
- `400 Bad Request` — неверный JSON или отсутствует `url`.
|
||
|
||
## Прочее поведение
|
||
|
||
- Неизвестный путь: `404 Not Found`.
|
||
- Неподдерживаемый метод для `/connections`: `405 Method Not Allowed`.
|
||
- Заголовок `Allow` для `/connections`: `GET, POST, DELETE`.
|