{"id":27160368,"url":"https://github.com/arlikin/wgapi","last_synced_at":"2026-04-13T11:01:53.100Z","repository":{"id":258805125,"uuid":"873659327","full_name":"ARLIKIN/WgApi","owner":"ARLIKIN","description":"API для управления пользователями WireGuard и их конфигурациями. ","archived":false,"fork":false,"pushed_at":"2025-01-04T16:48:28.000Z","size":34,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T23:44:53.416Z","etag":null,"topics":["api-rest","flask","wireguard"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ARLIKIN.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-16T14:20:56.000Z","updated_at":"2025-01-04T16:48:31.000Z","dependencies_parsed_at":"2024-10-20T21:41:26.803Z","dependency_job_id":null,"html_url":"https://github.com/ARLIKIN/WgApi","commit_stats":null,"previous_names":["arlikin/wgapi"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARLIKIN%2FWgApi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARLIKIN%2FWgApi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARLIKIN%2FWgApi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARLIKIN%2FWgApi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ARLIKIN","download_url":"https://codeload.github.com/ARLIKIN/WgApi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247947821,"owners_count":21023058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","flask","wireguard"],"created_at":"2025-04-08T23:44:59.494Z","updated_at":"2026-04-13T11:01:53.093Z","avatar_url":"https://github.com/ARLIKIN.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WireGuard User Management API\n\nAPI для управления пользователями WireGuard и их конфигурациями. \n\n## Версия\n- **OpenAPI**: 3.0.0\n- **Версия API**: 1.0.0\n\n\u003ch2\u003eБыстрая установка WireGuard и API:\u003c/h2\u003e\n\n```bash\nsudo wget https://github.com/ARLIKIN/WgApi/releases/download/download/Wireguard-installer-with-Adminpanel.sh \u0026\u0026 chmod 774 Wireguard-installer-with-Adminpanel.sh \u0026\u0026 ./Wireguard-installer-with-Adminpanel.sh\n```\n- после настройки WireGuard появится окно выбора: `Hotite li ustanovit' srazu API(1 - Da, 0 - Net)::` Нажмите 1 если хотите установить API\n\n\u003ch2\u003eБыстрая установка API:\u003c/h2\u003e\n\n```bash\nsudo wget https://github.com/ARLIKIN/WgApi/releases/download/download/Api_installer.sh \u0026\u0026 chmod 774 Api_installer.sh \u0026\u0026 ./Api_installer.sh\n```\n\n\u003ch3\u003eУправление API:\u003c/h3\u003e\n\n```bash\nsudo systemctl status ApiWg\n```\n\n\u003ch3\u003eStart\u003c/h3\u003e\n\n```bash\nsudo systemctl start ApiWg\n```\n\n\u003ch3\u003eStop\u003c/h3\u003e\n\n```bash\nsudo systemctl stop ApiWg\n```\n\n\u003ch3\u003eRestart\u003c/h3\u003e\n\n```bash\nsudo systemctl restart ApiWg\n```\n\n## Сервер\n- **URL**: `http://localhost:8080`\n- **Описание**: Сервер разработки\n\n## Методы API\n\n### 1. GET `/len`\nВозвращает количество пользователей, основываясь на файлах конфигурации в директории `wg/static`.\n\n- **Аутентификация**: требуется\n- **Ответы**:\n  - `200 OK`:\n    ```json\n    {\n      \"success\": true,\n      \"user_count\": 5\n    }\n    ```\n  - `401 UNAUTHORIZED`: если аутентификация не пройдена.\n  - `500 INTERNAL SERVER ERROR`: если возникает ошибка при подсчёте.\n\n### 2. POST `/createWG`\nСоздаёт нового пользователя WireGuard и генерирует его конфигурацию.\n\n- **Тело запроса (JSON)**:\n    ```json\n    {\n      \"name_key\": \"имя_пользователя\"\n    }\n    ```\n- **Аутентификация**: требуется\n- **Ответы**:\n  - `200 OK`: успешное создание и возвращение конфигурации.\n    ```json\n    {\n      \"success\": true,\n      \"config\": \"содержимое конфигурации\"\n    }\n    ```\n  - `400 BAD REQUEST`: если `name_key` не указан.\n  - `404 NOT FOUND`: если шаблон конфигурации не найден.\n  - `500 INTERNAL SERVER ERROR`: если команда создания пользователя не выполнена.\n\n### 3. DELETE `/deleteWG`\nУдаляет пользователя WireGuard и его конфигурацию.\n\n- **Тело запроса (JSON)**:\n    ```json\n    {\n      \"name_key\": \"имя_пользователя\"\n    }\n    ```\n- **Аутентификация**: требуется\n- **Ответы**:\n  - `200 OK`: успешное удаление пользователя.\n    ```json\n    {\n      \"success\": true\n    }\n    ```\n  - `400 BAD REQUEST`: если `name_key` не указан.\n  - `500 INTERNAL SERVER ERROR`: если команда удаления пользователя не выполнена.\n\n### 4. GET `/getConfig`\nВозвращает конфигурацию пользователя по имени.\n\n- **Тело запроса (JSON)**:\n    ```json\n    {\n      \"name_key\": \"имя_пользователя\"\n    }\n    ```\n- **Аутентификация**: требуется\n- **Ответы**:\n  - `200 OK`: \n    ```json\n    {\n      \"success\": true,\n      \"config\": \"содержимое конфигурации\"\n    }\n    ```\n  - `400 BAD REQUEST`: если `name_key` не указан.\n  - `404 NOT FOUND`: если конфигурация не найдена.\n\n### 5. GET `/users`\nВозвращает список имен всех файлов конфигураций из директории `wg/static`.\n\n- **Аутентификация**: требуется\n- **Ответы**:\n  - `200 OK`:\n    ```json\n    {\n      \"success\": true,\n      \"users\": [\"wg0-client-1\", \"wg0-client-2\", \"wg0-client-2\"]\n    }\n    ```\n  - `500 INTERNAL SERVER ERROR`: если возникает ошибка при получении пользователей.\n\n## Компоненты\n\n### Схемы безопасности\n- **Basic Auth**: HTTP Basic Authentication используется для всех маршрутов, требующих аутентификации.\n\n## Декораторы и функции\n\n### `auth_required`\nПроверяет базовую авторизацию для доступа к маршрутам. Если аутентификация не пройдена, возвращает `401 UNAUTHORIZED`.\n\n### `execute_command(command, app)`\nВыполняет команду в shell. Если возникает ошибку, логирует её и возвращает `False`.\n\n### `read_config(key)`\nЧитает и возвращает содержимое конфигурационного файла пользователя по его ключу (`name_key`). Если файл не найден, возвращает `None`.\n\n### `error_check_exist_user_id()`\nВозвращает ошибку `400 BAD REQUEST`, если идентификатор пользователя (`name_key`) не указан.\n\n### `error_not_found_config()`\nВозвращает ошибку `404 NOT FOUND`, если конфигурация пользователя не найдена.\n\n### `return_config(config_content)`\nВозвращает содержимое конфигурации пользователя с кодом `200 OK`.\n\n---\n\n\n### Сэк используемых технологий\n * [**Python 3.11**](https://www.python.org/downloads/release/python-390/)\n * [**Flask 3.0.3**](https://flask.palletsprojects.com/en/3.0.x/)\n\n\n### Список разработчиков проекта:\n* [**ARLIKIN**](https://github.com/ARLIKIN)\n* [**Obi0Wan0Kenobi**](https://github.com/Obi0Wan0Kenobi)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farlikin%2Fwgapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farlikin%2Fwgapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farlikin%2Fwgapi/lists"}