Files
vpn_server/README.md
2026-04-19 23:37:52 +03:00

118 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.