Профессиональное GUI приложение для управления профилями WireGuard на Ubuntu 22.04/24.04.
- Быстрый старт
- Особенности
- Установка
- Настройка PolicyKit
- Использование
- Логирование
- Тестирование
- Разработка
- Лицензия
-
Клонируйте репозиторий:
git clone <repository-url> cd wg-manager
-
Запустите установку:
chmod +x install.sh run.sh ./install.sh
-
Запустите приложение:
./run.sh
Готово! Приложение появится в меню приложений как "WireGuard Manager".
- Профессиональное логирование с ротацией, цветным выводом и раздельными файлами
- 100% покрытие тестами критической бизнес-логики
- Безопасность через PolicyKit (pkexec) вместо прямого sudo
- Асинхронный UI с блокировкой кнопок во время операций
- Защита от повторных кликов (дебаунс 500 мс)
- Настраиваемые профили через конфигурационный файл
- Адаптивный интерфейс 700x500px
- Темная тема GTK (Adwaita-dark)
- Цветная индикация статуса профилей
- Вкладки "Статус" и "Логи"
- Горячие клавиши (Ctrl+1, Ctrl+2, Ctrl+3, F5)
- Реальное время работы соединения
- Статистика передачи данных (МБ принято/отправлено)
- Вывод команды
wg show - Просмотр последних 100 записей логов
./install.shСкрипт выполнит:
- Установку системных зависимостей (wireguard-tools, python3-gi, policykit-1)
- Настройку PolicyKit
- Создание директорий для логов
- Интеграцию в системное меню
- Запуск тестов
sudo apt update
sudo apt install wireguard-tools policykit-1 python3 python3-pip \
python3-gi python3-gi-cairo gir1.2-gtk-3.0 \
gir1.2-glib-2.0 python3-setuptoolsСкрипт установки автоматически создаст файл политики в /usr/share/polkit-1/actions/org.wireguard.manager.policy
Убедитесь, что профили созданы в /etc/wireguard/:
App.confbomBox.confusa.conf
По умолчанию приложение работает с тремя профилями: App, bomBox, usa. Вы можете изменить этот список через конфигурационный файл.
Создайте файл ~/.local/share/wg-manager/config.json:
{
"profiles": ["myprofile1", "myprofile2", "vpn-work", "vpn-home"]
}Важно: Имена профилей должны соответствовать именам файлов конфигурации в /etc/wireguard/ (без расширения .conf).
{
"profiles": ["work", "home"]
}Соответствующие файлы конфигурации должны существовать:
/etc/wireguard/work.conf/etc/wireguard/home.conf
Вы также можете настроить другие параметры (в разработке):
{
"profiles": ["App", "bomBox"],
"timeout_wg_show": 30,
"timeout_wg_quick": 60,
"auto_refresh_interval": 2
}Примечание: После изменения конфигурационного файла необходимо перезапустить приложение.
Установщик создает следующий файл политики:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
<action id="org.wireguard.manager.run-wg-quick">
<description>Run wg-quick commands for WireGuard profiles</description>
<message>Authentication is required to manage WireGuard VPN connections</message>
<icon_name>network-wireless</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/wg-quick</annotate>
<annotate key="org.freedesktop.policykit.exec.allow_gui">false</annotate>
</action>
</policyconfig>pkaction --action-id org.wireguard.manager.run-wg-quick./run.sh # Обычный запуск
./run.sh --debug # С отладкой
./run.sh --no-gui # Без GUI (для CI)
./run.sh --log-level=DEBUG # Детальное логирование- Ctrl+1: Отключить все профили
- Ctrl+2: Активировать bomBox
- Ctrl+3: Активировать App
- F5: Обновить статус
Отключает все профили в последовательности:
wg-quick down App
wg-quick down bomBox
wg-quick down usaАктивирует профиль bomBox:
wg-quick down App
wg-quick down usa
wg-quick up bomBoxАктивирует профиль App:
wg-quick down usa
wg-quick down bomBox
wg-quick up App- Основной лог:
~/.local/share/wg-manager/wg-manager.log - Лог ошибок:
~/.local/share/wg-manager/errors.log
[2026-02-14 15:30:22] [INFO] [core:45] Активация профиля bomBox...
[2026-02-14 15:30:23] [DEBUG] [core:89] Команда выполнена успешно за 1.23с
[2026-02-14 15:30:24] [WARNING] [core:102] Профиль уже активен
- DEBUG: Все команды перед выполнением, сырые выводы
- INFO: Успешные операции, смена статуса
- WARNING: Профиль уже активен/отключен
- ERROR: Ошибки выполнения команд
- CRITICAL: Системные ошибки (PolicyKit, права)
Нажмите "💾 Сохранить лог" в интерфейсе для экспорта последних 1000 строк.
cd wg-manager
python3 -m pytest tests/ -vpython3 -m pytest tests/ --cov=wg_manager --cov-report=term-missingtests/
├── test_core.py # Тесты бизнес-логики (100% покрытие)
└── test_logger.py # Тесты системы логирования
- Активация/деактивация профилей
- Валидация конфигураций
- Обработка ошибок
- Идемпотентность операций
- Парсинг вывода команд
wg-manager/
├── wg-manager.py # Основной файл приложения
├── wg_manager/ # Пакет с модулями
│ ├── __init__.py
│ ├── core.py # Бизнес-логика
│ ├── logger.py # Система логирования
│ └── ui.py # GUI компоненты
├── tests/ # Автотесты
│ ├── __init__.py
│ ├── test_core.py
│ └── test_logger.py
├── run.sh # Скрипт запуска
├── install.sh # Скрипт установки
├── wg-manager.desktop # Файл для меню приложений
└── README.md # Документация
- Python 3.10+ с type hints
- Следование PEP 8
- 100% покрытие тестами критической логики
- Комментарии на русском языке
# Установка зависимостей разработчика
pip install pytest pytest-cov
# Запуск линтера
python3 -m py_compile wg_manager/*.py
# Запуск тестов
python3 -m pytest tests/ --cov=wg_manager --cov-report=htmlsudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0sudo apt install policykit-1sudo chmod 755 /etc/wireguard
# Или добавьте пользователя в соответствующую группуУбедитесь, что файлы конфигурации существуют:
ls -la /etc/wireguard/*.conftail -f ~/.local/share/wg-manager/wg-manager.logMIT License
Copyright (c) 2026 WireGuard Manager
Разрешается бесплатное использование, копирование, изменение и распространение программного обеспечения при условии указания авторства.
- Форкните репозиторий
- Создайте ветку для вашей функции
- Внесите изменения
- Добавьте тесты
- Отправьте pull request
WireGuard Manager — профессиональный инструмент для управления VPN соединениями с открытым исходным кодом.