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

2.5 KiB
Raw Blame History

VPN Links HTTP Server

Простой HTTP-сервер на Dart для хранения и выдачи VPN-ссылок через SQLite.

Что делает сервер

  • Поднимает HTTP-сервер на 0.0.0.0:8080.
  • Создает SQLite-базу data/vpn_links.db при первом запуске.
  • Создает таблицу connections, если ее нет.
  • Добавляет стартовые ссылки (seed) один раз через INSERT OR IGNORE.

Формат ответа списка ссылок:

{
  "links": [
    "vless://...",
    "vmess://...",
    "trojan://..."
  ]
}

Установка и запуск

  1. Установить зависимости:
dart pub get
  1. Запустить сервер:
dart run bin/vpn_server.dart

После запуска сервер доступен по адресу http://127.0.0.1:8080.

API

GET /connections

Возвращает все ссылки из базы.

Пример:

curl http://127.0.0.1:8080/connections

Успешный ответ: 200 OK

{
  "links": [
    "vless://example",
    "trojan://example"
  ]
}

POST /connections

Добавляет новую ссылку.

Тело запроса:

{
  "url": "trojan://example-link"
}

Пример:

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.

Тело запроса:

{
  "url": "trojan://example-link"
}

Пример:

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.