Commit Graph
71 Commits
Author SHA1 Message Date
infosave2007 6f15b62ef1 fix(db): Add missing migration 047 to create protocols table 2026-01-24 15:35:41 +03:00
infosave2007 de10268ab4 fix(qr): Generate full X-Ray Client config JSON to match Native Amnezia format 2026-01-24 14:56:13 +03:00
infosave2007 fdbb18c9df fix(qr): Pass raw VLESS URI in last_config without JSON wrapper 2026-01-24 14:50:55 +03:00
infosave2007 5097186757 fix(qr): Use raw URI for X-Ray QR codes to ensure compatibility 2026-01-24 14:35:12 +03:00
infosave2007 7735a25256 fix(client): Propagate show_text_content setting from protocol to client view 2026-01-24 14:28:53 +03:00
infosave2007 57e331239c feat(xray): Implement universal client addition with fallback
- Added InstallProtocolManager::addClient and fallback logic for X-Ray VLESS
  to update server configuration (server.json) and restart container.
- Updated VpnClient::create to invoke InstallProtocolManager::addClient for
  scripted protocols, enabling dynamic user addition.
- Ensured UUID generation for X-Ray clients.
2026-01-24 14:08:43 +03:00
infosave2007 dde0ff9ea1 fix(qr): Use raw VLESS URI in last_config->config
Instead of generating a JSON config for X-Ray, pass the raw VLESS URI string
wrapped in a JSON object  inside .
This matches the behavior of WireGuard config handling in the master branch
and is likely the expected format for Amnezia Android X-Ray import.
2026-01-24 13:48:57 +03:00
infosave2007 174a2fb1e8 fix(qr): Add isThirdPartyConfig and reorder keys
- Added 'isThirdPartyConfig' => true to X-Ray config object. This flag is present in imported configs in Amnezia Android.
- Reordered keys so protocol object ('xray') comes before 'container' key, matching the order seen in WireGuard QR codes.
2026-01-24 13:45:56 +03:00
infosave2007 b2f42ec7ec fix(qr): Return to 12-byte Amnezia header but keep config wrapping
Reverting header to 12-byte format (0x07C00100 + compressedLen + uncompressedLen).
This header format is known to be scanned correctly by Amnezia app.
Previous failure with this header was due to missing config wrapping.
Now we have both: correct header AND correct content structure.
2026-01-24 13:42:20 +03:00
infosave2007 939cba70b7 fix(qr): Use hybrid Chunked+Qt format for QR codes
The format that likely works with Amnezia Android is:
HEADER: 0x07C00100 (Magic 1984, Count 1, Id 0)
PAYLOAD: [UncompressedLen (4b)] + [Zlib Data]

This satisfies the Chunked QR check (magic 0x07C0) and then passes
the payload to qUncompress, which expects the 4-byte uncompressed length prefix.

Previous attempts failed because:
1. 12-byte header included compressedLen, which qUncompress interpreted as uncompressedLen (causing size mismatch error)
2. 4-byte header (Qt only) failed the Magic check
2026-01-24 13:38:32 +03:00
infosave2007 00affda8f2 fix(qr): Wrap X-Ray config in 'config' field inside last_config
Amnezia Android expects the contents of 'last_config' to be a JSON object
containing a 'config' field which holds the actual protocol configuration string.
Previously we were putting the configuration directly into 'last_config',
which caused the import to fail.
2026-01-24 13:34:13 +03:00
infosave2007 e283fdac1d fix(qr): Revert to original 12-byte Amnezia header format
The working QR format from Amnezia app uses:
- 12-byte header: version (0x07C00100) + compressedLen + uncompressedLen
- zlib compressed JSON data

Previously I incorrectly changed this to Qt qCompress format (4-byte header).
This commit reverts to the correct Amnezia-compatible format.
2026-01-24 13:26:24 +03:00
infosave2007 45c0985ace fix(qr): Use Qt qCompress format for QR code encoding
Amnezia Android uses qUncompress which expects:
- 4-byte big-endian uncompressed length prefix
- zlib compressed data (gzcompress output)

Previously we used a custom 12-byte header (version, compressedLen, uncompressedLen)
which was incompatible with Qt's qUncompress.

This fix ensures X-Ray QR codes can be properly decoded by Amnezia VPN app.
2026-01-24 13:17:57 +03:00
infosave2007 25ff0949ce fix(xray): Fix X-Ray install script and QR code generation
- Fix docker run command in install script (use single line instead of
  backslash continuations which break when stored in MySQL)
- Handle new xray x25519 output format that uses 'Password' instead of 'Public key'
- Make addClientToServer method public for backup restore functionality
- Created migration 046 with complete fix for X-Ray VLESS protocol
2026-01-24 13:03:05 +03:00
infosave2007 cbcd260498 fix: set xray default port to 443 to match android client 2026-01-23 20:07:27 +03:00
infosave2007 6b15cbc942 fix: add flow xtls-rprx-vision to xray server config 2026-01-23 19:55:56 +03:00
infosave2007 aa956e0ab2 fix: proper json escaping in xray install script 2026-01-23 19:33:58 +03:00
infosave2007 0a274ec263 fix: update xray install script to correct variable expansion 2026-01-23 19:22:01 +03:00
infosave2007 c9fecb45da feat: replace native confirm with custom modal to fix auto-close issue 2026-01-23 19:08:41 +03:00
infosave2007 6303abd181 fix: prevent confirm dialog from closing immediately on delete buttons 2026-01-23 18:57:27 +03:00
infosave2007 bbab877eac feat: ssh auth, protocol management, and cleanup 2026-01-23 17:55:40 +03:00
infosave2007 97bbc36032 chore(update): update auto-update script (migrations handling & translations) 2025-11-14 09:56:47 +03:00
infosave2007 dfdf5da368 fix: Improve LDAP configuration loading with table existence check 2025-11-11 19:04:53 +03:00
infosave2007 669baf1ba7 fix: Ensure Tailwind CSS devtools configuration is set correctly 2025-11-10 18:01:52 +03:00
infosave2007 d70ed1bbf3 chore: Add LDAP_FEATURE.md to gitignore 2025-11-10 18:01:52 +03:00
infosave2007 e7e901f6e5 feat: Add LDAP/Active Directory integration with group-based access control
- Add PHP LDAP extension to Docker container
- Implement LdapSync class for authentication and user synchronization
- Add automatic user sync via cron (every 30 minutes)
- Create role-based access control system (admin, manager, viewer)
- Add LDAP configuration UI in settings
- Support for both Active Directory and OpenLDAP
- Group-to-role mapping with flexible configuration
- Add 50+ translations (EN + RU) for LDAP features
- Include comprehensive setup documentation
- Enhance Auth::login() with LDAP fallback
- Add LDAP settings page with connection testing
2025-11-10 18:01:52 +03:00
infosave2007 406d3439e7 chore: Update gitignore 2025-11-10 18:01:52 +03:00
infosave2007 23075f1209 fix: update last_handshake when collecting metrics 2025-11-10 16:46:08 +03:00
infosave2007 a00868515f feat: add cron configuration check in container and log status 2025-11-10 16:29:04 +03:00
infosave2007 2ba0699b85 feat: improve metrics collector handling by starting it if not running and logging status 2025-11-10 16:09:21 +03:00
infosave2007 3c4f0aef53 fix: ensure NEW_COMMIT is set to CURRENT_COMMIT when no update is available 2025-11-10 16:05:31 +03:00
infosave2007 84474e5d68 feat: enhance update script to rebuild containers on Dockerfile changes and check metrics collector status 2025-11-10 16:04:15 +03:00
infosave2007 523a1a1836 feat: enhance update script with argument parsing and logging improvements 2025-11-10 15:53:23 +03:00
infosave2007 2de1b58fa4 feat: implement automatic metrics collection and monitoring system 2025-11-10 15:19:36 +03:00
infosave2007 bccd21b0a5 chore: remove outdated 2025-11-08 18:58:11 +03:00
infosave2007 f7603f04bf Update installation instructions with both docker compose versions 2025-11-08 18:22:04 +03:00
infosave2007 7a105cce6e Fix SettingsController for new translations table structure 2025-11-08 18:16:44 +03:00
infosave2007 2106aa77e0 Fix Translator.php for new table structure 2025-11-08 17:55:14 +03:00
infosave2007 93a5ff8c83 fix: Update user creation script to use mysql_native_password authentication 2025-11-08 17:49:03 +03:00
infosave2007 618f0421f2 fix: Ensure user creation and privileges are granted for localhost 2025-11-08 17:46:30 +03:00
infosave2007 e20686ef21 Add automatic user creation on database init 2025-11-08 17:41:33 +03:00
infosave2007 ec685e7672 feat: Implement migration procedure for translations table structure and insert new translations 2025-11-08 17:26:05 +03:00
infosave2007 7371dd6db0 fix: Simplify SQL command for creating migrations tracking table in update script 2025-11-08 17:01:35 +03:00
infosave2007 1aa0f31af2 fix: Simplify query for checking applied migrations in update script 2025-11-08 17:00:02 +03:00
infosave2007 14b6f5aec1 fix: Correct command substitution for checking applied migrations in update script 2025-11-08 16:57:13 +03:00
infosave2007 06536328c4 feat: Source .env file safely in update script for improved security 2025-11-08 16:54:44 +03:00
infosave2007 360bb66cea feat: Enhance update script with improved Docker command detection and database credential handling 2025-11-08 16:51:43 +03:00
infosave2007 4135972144 feat: Add auto update script for Amnezia VPN Panel with backup and migration support 2025-11-08 16:15:25 +03:00
infosave2007 7c9136152b feat: Implement server and client metrics collection and monitoring
- Added a new PHP script for collecting server metrics every 30 seconds.
- Created a ServerMonitoring class to handle metrics collection for CPU, RAM, Disk, and Network.
- Introduced database tables for storing server and client metrics.
- Updated server view template to display real-time metrics using Chart.js.
- Added translations for monitoring UI elements.
- Created a new monitoring template for detailed server metrics visualization.
- Implemented client speed tracking and display in the monitoring UI.
2025-11-08 15:35:17 +03:00
infosave2007 932a893d69 feat: sanitize client name input to allow only letters, numbers, underscores, and dashes 2025-11-08 13:56:11 +03:00
infosave2007 f6e6feb52c fix: update traffic metrics to use bytes instead of traffic values 2025-11-08 13:17:07 +03:00
infosave2007 a23a547572 docs: добавлена инструкция по тестированию импорта 2025-11-08 12:46:02 +03:00
infosave2007 ab479e61ff docs: добавлены примеры backup файлов для импорта
- Пример wg-easy backup (db.json)
- Пример 3x-ui export
- Подробная документация по импорту
- Инструкции по получению backup файлов
- Список импортируемых данных
2025-11-08 12:45:08 +03:00
infosave2007 fc39346240 feat: добавлена возможность импорта из wg-easy и 3x-ui панелей
Основные изменения:
- Создан класс PanelImporter для парсинга и импорта клиентов
- Добавлена поддержка wg-easy (db.json)
- Добавлена поддержка 3x-ui (export JSON)
- Создана таблица panel_imports для отслеживания истории
- Добавлен UI для загрузки backup файлов при создании сервера
- Добавлены API endpoints: POST /api/servers/{id}/import и GET /api/servers/{id}/imports
- Автоматический импорт после деплоя сервера
- Переводы на всех 6 языках (EN, RU, ES, DE, FR, ZH)
- Обновлена документация в README

Функционал:
- Импорт клиентов с сохранением ключей и IP (wg-easy)
- Импорт клиентов с автогенерацией ключей (3x-ui)
- Поддержка экспирации и лимитов трафика из исходных панелей
- История импортов с информацией о количестве клиентов
- Обработка ошибок с детальным логированием
2025-11-08 12:40:43 +03:00
infosave2007 bbb0fbeeb9 feat: добавлена возможность ручного ввода времени и трафика
- Добавлены custom input поля для expiration (секунды) и traffic (МБ)
- Добавлена функциональность редактирования клиента
- Исправлена migration 007 (AFTER expires_at)
- Удалены дублирующиеся миграции (0025, 0044, 0053, 0057)
- Удалён старый init.sql (заменён на 001_init.sql)
- Добавлены переводы для custom полей на 6 языках
2025-11-08 10:45:05 +03:00
infosave2007 b6cf9cbab7 Add traffic limit functionality
- Add traffic_limit field to vpn_clients table (migration 007)
- Add traffic limit management methods in VpnClient class
- Add API endpoints: set-traffic-limit, traffic-limit-status, overlimit
- Add UI for setting limits when creating clients
- Add traffic limit column in clients table with visual indicators
- Add automatic traffic limit check via cron (bin/check_traffic_limits.php)
- Add translations for traffic limits (6 languages)
- Update README with traffic limit documentation
2025-11-08 09:56:25 +03:00
infosave2007 5510e0b7b1 Fix(docs) cron 2025-11-08 09:41:54 +03:00
infosave2007 de73728733 Add automatic cron for client expiration check 2025-11-08 09:36:23 +03:00
infosave2007 da2bd8f8fa Add backups/ to .gitignore 2025-11-08 09:16:13 +03:00
infosave2007 8163684a79 Remove backups directory from git tracking 2025-11-08 09:15:57 +03:00
infosave2007 ea516bdd6f feat(database): add complete database schema with user, server, client, and translation tables 2025-11-08 09:14:59 +03:00
infosave2007 1f91f17f57 Add multilingual support with translations for German, Russian, French, and Chinese
Added time limits and backup functions for servers
2025-11-08 09:14:20 +03:00
infosave2007 1deea2e4b7 fix(docs): update installation commands for composer and translate script 2025-11-07 23:00:07 +03:00
infosave2007 ede8d610f7 fix(docs): correct directory name in installation instructions 2025-11-07 22:47:48 +03:00
infosave2007 abcad2cfe1 settings namespace JWT 2025-11-07 17:54:36 +03:00
infosave2007 ab500a1f98 refactor(JWT): improve secret key retrieval and storage logic
- Update database query to use namespace/key pattern for better organization
- Add JSON decoding for stored secret values
- Ensure minimum key length requirement is consistently enforced
- Simplify key generation and storage with proper JSON encoding
2025-11-07 17:49:28 +03:00
infosave2007 a52aba25d8 Add QR code support in API endpoints
- Updated /api/clients/create to return config and qr_code
- Updated /api/clients/{id}/details to include config and qr_code
- Added new endpoint /api/clients/{id}/qr for getting QR code only
- Added API_EXAMPLES.md with usage examples and integration code
- Updated README.md API documentation
2025-11-07 15:25:59 +03:00
infosave2007 f538fb65f1 Update installation instructions with correct repository URL 2025-11-07 13:58:27 +03:00
infosave2007 5d039484a1 Remove tests files 2025-11-07 13:36:54 +03:00
infosave2007 a33af60f2d Add project files 2025-11-07 13:34:06 +03:00
infosave2007 3402b19f2c first commit 2025-11-07 13:33:04 +03:00