Refactored the web panel's user link generation to resolve a major performance bottleneck. Previously, fetching links for N users would trigger N separate script executions, causing significant delays from process startup overhead.
- Introduced a new bulk API endpoint (`/api/v1/users/uri/bulk`) that accepts a list of usernames and calls the backend script only once.
- Updated the frontend JavaScript in `users.html` to use this new endpoint, replacing N parallel API calls with a single one.
- Cleaned up the `wrapper_uri.py` script for better readability and maintainability.
Refactored the aiohttp authentication server to be a purely read-only service. Removed all file write operations from the authentication logic to eliminate disk I/O and reduce CPU overhead during connection attempts.
The responsibility for persistently blocking users by writing to `users.json` is now fully delegated to the external scheduler service, allowing the auth server to function as a faster, more efficient gatekeeper.
- Replace synchronous file operations with async aiofiles
- Implement concurrent data gathering using asyncio.gather()
- Move API calls to thread pool executor
- Add LRU cache for config file reads
- Optimize parsing functions for single-pass processing
- Reduce measurement intervals for faster response times
- Add system uptime and boot time display
- Track total network traffic since last reboot from /proc/net/dev
- Separate system traffic (since reboot) from user traffic (all-time)
- Add human-readable uptime formatting
- Enhance output with clear traffic categorization
🚫 feat: Blocked user validation in subscription endpoint
🌐 feat(subscription): Add external configs to NormalSub links
⚙️ feat(UI): Manage extra subscription configs in settings page
🖥️ feat(API): Webpanel API for extra subscription configs
🛠️ feat(CLI): Add CLI support for extra subscription configs
📜 feat(scripts): Introduce extra_config.py for managing vmess, vless, ss, trojan links