# 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`.